Почему Up-Casting для C является избыточным? - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь выяснить, почему приведение является избыточным (вот предупреждение, которое я получаю), в конце то, что напечатано "C".

public class Main {
public static void main(String[] args){
    C c = new C();
    B b1 = (B) c;
    b1.f();
    }
}

class A{
    void f(){
    System.out.println("A");
   }
}

class B extends A{

}

class C extends B{
    void f(){
    System.out.println("C");
    }
}

Ответы [ 2 ]

2 голосов
/ 01 июля 2019

C extends B означает, что C является B. И вам не нужно приводить C к B, потому что это B.

Таким образом, upcast (от C до B) всегда избыточен. Единственный случай, когда вам понадобится разыграть, это пониженный рейтинг (от B до C):

B b = new C();
C c = (C) b;
1 голос
/ 01 июля 2019

Класс c расширяет класс B. Таким образом, любой объект C также является объектом B из-за наследования. Так что вам не нужно явно приводить '(B)' до c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...