Wypisanie metody obiektowej

Wypisanie metody obiektowej
J9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

Witam, przerabiam zadanie z klas i metod, wszystko szło bezproblemowo do momentu, gdy utworzyłem metodę MyNumber pow(MyNumber x). Inne metody typu double mogłem z łatwością wypisać, w przypadku powyższej metody już miałem problem, dlatego stworzyłem drugi obiekt typu MyNumber numb1 = numb.pow(numb), niestety nic to nie zmieniło i nie rozwiązało mojego problemu. Poniżej kod razem z klasa main:

Kopiuj




public class Main {

    public static void main(String[] args) {

        MyNumber numb = new MyNumber(4);
        MyNumber numb1 = numb.pow(numb);
        numb.myNumberIsOdd();
        System.out.println(numb.myNumberIsOdd());
        numb.myNumberIsEven();
        System.out.println(numb.myNumberIsEven());
        numb.myNumberSqrt();
        System.out.println(numb.myNumberSqrt());
        System.out.println(numb1.pow(numb));



    }
}




public class MyNumber {

    private double number = 0;


    public MyNumber(double number) {
        this.number = number;
    }

    public double getNumber() {
        return number;
    }

    boolean myNumberIsOdd() {
        if (number % 2 != 0) {
            return true;
        }
        return false;
    }

    boolean myNumberIsEven() {
        if (number % 2 == 0) {
            return true;
        }
        return false;
    }

    double myNumberSqrt() {
        return Math.sqrt(number);
    }

    myNumber pow(MyNumber x) {
        return new MyNumber(Math.pow(number, x.number));
    }

}
S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 3573
1

Nie wyświetlasz "metody obiektowej" tylko wyświetlasz reprezentację w Stringu albo typu prymitywnego albo obiektu. Ponieważ MyNumber nie ma nadpisanej metody to String to wyświetli Ci nazwe klasy i hash.
I coś słabo że przez rok tylko tyle przerobiłeś :/

J9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

Piszę hobbystycznie jak mam czas, a mam go nie wiele, sporo też nie rozumiem, dlatego idzie dość ciężko. Czyli muszę nadpisać metodę StringtoString?

QuantumComp
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
2
jasper93 napisał(a):

Piszę hobbystycznie jak mam czas, a mam go nie wiele, sporo też nie rozumiem, dlatego idzie dość ciężko. Czyli muszę nadpisać metodę StringtoString?

W Javie każda klasa dziedziczy po klasie bazowej Object. Ktoś sobie kiedyś tak założył, że klasa Object będzie miała kilka predefiniowanych metod link. Skoro dla każdej klasy w Javie, klasa Object jest klasą bazową, to każda klasa posiada dostęp do tych metod. Jedną z tych metod w klasie Object jest String toString(). Jak wskazuje dokumentacja, metoda ta zwraca:

Returns a string representation of the object.

Domyślnie, gdy próbujesz wyprintować obiekt, metoda toString() tego obiektu jest wołana. W Twoim przypadku, printujesz obiekt, który nie posiada nadpisanej tej metody, więc używana jest implementacja z klasy Object która zwraca coś takiego:

Kopiuj
return getClass().getName() + '@' + Integer.toHexString(hashCode())

Jeśli chcesz, wypisać wartości pól swojej klasy, musisz nadpisać tą metodę w tej samej klasie, a tam zwrócić odpowiedni rezultat, oczekiwany przez Ciebie.
Poniżej stworzyłem Ci prosty przykład:

Kopiuj
public class ToStringExample {
    private final String exampleField1;
    private final String exampleField2;
    private final String exampleField3;

    public ToStringExample(String exampleField1, String exampleField2, String exampleField3) {
        this.exampleField1 = exampleField1;
        this.exampleField2 = exampleField2;
        this.exampleField3 = exampleField3;
    }

    @Override
    public String toString() {
        return "ToStringExample{" +
                "exampleField1='" + exampleField1 + '\'' +
                ", exampleField3='" + exampleField3 + '\'' +
                '}';
    }
}

Jeśli utworzysz sobie teraz obiekt tej klasy, podasz w konstruktorze parametry, a następnie wyprintujesz tą klase, to dostaniesz w rezultacie wartość zwróconą z metody toString() z tej klasy.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.