плз помочь мне понять mehtod вызова на line2 приведенном ниже фрагмент кода, который вызывающая bMethod() Оранжевый класса, даже если объект Orange отливает к типу рис на LINE1метод во время выполнения вызова на литейных объектах в Java
interface a{public void aMethod();}
interface b{public void bMethod();}
interface c extends a,b{public void cMethod();}
class Fig implements b{
@Override
public void bMethod() {
System.out.println("Fig a");
}
}
class Orange extends Fig implements c{
@Override
public void aMethod() {
System.out.println("Orange a");
}
@Override
public void bMethod(){
System.out.println("Orange b");
}
@Override
public void cMethod() {
System.out.println("Orange c");
}
}
public class Q71 {
public static void main(String...args){
Fig e = (Fig)(new Orange()); //line 1 --
e.bMethod(); //line 2--invokes Orange's bMethod()?
}
}
Справка Plz Я не могу выяснить вызов метода runtime с надлежащей причиной? Заранее благодарен
Здравствуйте Андрей, я знаю о времени выполнения полиморфизм, но мой точный сомнение в том, что объект Оранжевый быть отлиты на рис типа объекта, так что теперь мы объект Рис ссылки «да»? Кастинг преобразует один тип объекта в другой? Я понимаю, что если Fig e = new Orange() был случайным, то было бы проблемой вызвать оранжевую версию bMethod() –
@ Kamlesh Sharma: Typecasts не меняют тип объекта. Они меняют только тип * reference *, указывающий на него. Это ключевой момент полиморфизма во время выполнения. Если бы вам приходилось знать точный тип во время компиляции, это не был * полиморфизм времени выполнения *. – Holger