• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Niepoprawna implementacja metody

Object Storage Arubacloud
+1 głos
119 wizyt
pytanie zadane 24 lipca 2020 w Java przez danielo665 Obywatel (1,040 p.)

Witam, 

mam pewien problem ponieważ 1 wywołanie metody Działa za to 2 i 3 już nie koniecznie , czy mógłby mi ktoś wytłumaczyć dlaczego i jak to się dzieje za odpowiedz dziękuje z góry

a oto i mój kod

import java.math.BigDecimal;

/*
OOP: przeciążanie metod
*/

public class Solution {

    static  class Tree{
        public Tree() {
        }

        public void info(Object s) {
        }
        public void info(Number s) {
        }
        public void info(String s) {
        }



    }
    public static void main(String[] args) {

        // Blok 2.
        // Wywoływanie obiektów
        new Tree().info((Object)new Integer("4"));
        new Tree().info((Object)new Short("4"));
        new Tree().info((Object)new BigDecimal("4"));

        // Blok 3.
        // Wywoływanie liczb
        new Tree().info(new Integer("4"));
        new Tree().info(new Short("4"));
        new Tree().info(new BigDecimal("4"));

        // Blok 4.
        // Wywoływanie ciągów
        new Tree().info(new String("4"));
        new Tree().info(new Integer("4").toString());
        new Tree().info(new Short("4").toString());
        new Tree().info(new BigDecimal("4").toString());
    }
}

To jest spełnione - Klasa Tree musi implementować metodę info(Object s).

to nie - 

  • Klasa Tree musi implementować metodę info(Number s).

  • Klasa Tree musi implementować metodę info(String s).

2 odpowiedzi

+1 głos
odpowiedź 24 lipca 2020 przez Oscar Nałogowiec (29,320 p.)
A na czym polega niedziałanie metody?

Nie jestem tego pewny, ale wydaje mi się, że problem może polegać na tym, że jako pierwszą zadeklarowałeś metodę info z parametrem Object - najbardziej uniwersalnym, i kompilator zawsze wybiera ten wariant.

Spróbuj przesunąć ten wariant na koniec.
komentarz 24 lipca 2020 przez mbabane Szeryf (79,280 p.)
Nie, java dobiera metody wedlug najbardziej pasujacego typu argumentu. Nie mam pewnosci tylko co sie stanie w pierwszych 3 przypadkach z rzutowaniem.
komentarz 24 lipca 2020 przez mbabane Szeryf (79,280 p.)

W pierwszych przypadkach (blok 2) wykona się metoda:

public void info(Object s) 

ponieważ jawnie wskazujemy że przekazujemy Object (poprzez rzutowanie).

Dla bloku 3 poleci metoda przyjmująca Number, a dla bloku 4 ta co przyjmuje String.

komentarz 24 lipca 2020 przez danielo665 Obywatel (1,040 p.)
w takim razie jeżeli java dobiera sobie co najlepiej pasuje jaka metoda , to w jaki sposób edytować kod aby jednak  te 2 pozostałe metody działały ?
0 głosów
odpowiedź 24 lipca 2020 przez mbabane Szeryf (79,280 p.)
Odpowiedz co znaczy nie działa. Metody nie mają ciała więc nic nie robią i na konsoli nic Ci się nie wyświetli.

Dodaj sobie jakiś System.out.println w każdej z nich wtedy na konsoli coś zobaczysz.

Podobne pytania

0 głosów
2 odpowiedzi 204 wizyt
pytanie zadane 30 czerwca 2019 w Java przez kacperl95 Obywatel (1,980 p.)
0 głosów
0 odpowiedzi 132 wizyt
pytanie zadane 29 stycznia 2022 w C# przez Zaba096 Początkujący (260 p.)
+1 głos
1 odpowiedź 422 wizyt
pytanie zadane 4 września 2021 w Python przez Hajpa Użytkownik (880 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...