У меня есть три вопроса на понимание основ ООП.
Первый вопрос:
Дано: class A{virtual a();} class B:A{override a();}
A a = new B();
a.a();
будет вызван метод а класса В, тк создается экземпляр класса В. Кастование здесь ни причем. Кастование работает в том случае, когда попробуем выполнить код // a.b();
proof code
package javaapplication1;
/**
*
*/
public class JavaApplication1 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
A a = new B();
a.a();
// a.b();
}
}
package javaapplication1;
/**
*
*/
public class A {
public A()
{
};
public void a()
{
System.out.println("class A, method a");
};
}
package javaapplication1;
/**
*
*/
public class B extends A
{
public B()
{};
@Override
public void a()
{
System.out.println("class B, method a");
};
public void b()
{
System.out.println("class B, method b");
};
}
результат
run:
class B, method a
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)