class Base {
public void show() {
System.out.println("Base class show() method called");
}
}
class Derived extends Base {
public void show() {
System.out.println("Derived class show () method called");
}
}
public class Main {
public static void main(String[] args) {
Base b = new Derived();//why is java allowing me to create an object of child class
b.show(); //how can the Base class hold and use the reference of child
}
}
如果我在子类中创建一个新方法会怎么样??父类是否仍然能够访问新方法??
class Derived extends Base {
public void show() {
System.out.println("Derived class show () method called");
}
public void poo() {
System.out.println("take a poo");
}
}
public class Main {
public static void main(String[] args) {
Base b = new Derived();
b.show();
b.poo();
}
}
为什么java允许我将一个子对象的引用赋值给基类,而不抛出任何警告或错误?
1条答案
按热度按时间hc8w905p1#
这被称为polymorphism。任何派生类都可以被认为是父类的示例(无需显式强制转换)。
可以调用的方法和可以访问的字段取决于对象的静态类型。在
Base b = new Derived();
的情况下,b
的静态类型是Base
,因此只能调用Base
上可见的方法。不能使用Derived
中定义的新方法。