家长班:
public class superClass {
private void m1() {
System.out.println("SuperClass's m1()");
}
public void m2() {
System.out.println("SuperClass's m2()");
m1();
}
}
儿童班:
public class Modify extends superClass {
public void m1() {
System.out.println("Modify's method1");
}
public static void main(String args[]) {
superClass s = new Modify();
s.m2();
}
}
我什么时候使用:
superClass s = new Modify();
而不是:
Modify s = new Modify();
是否可以在左侧声明s为superClass但在右侧调用'new Modify()'? 如果我们将s声明为Modify类,我们是否应该只能调用'new Modify()'?
答案 0 :(得分:3)
是否可以在左侧声明s为superClass但是 在右侧调用'new Modify()'?
是的,这是可能的,它被称为Java中的多态行为
如果我们将s声明为a,我们不应该只能调用'new Modify()' 修改类?
由于Modify
是superClass
的子类,因此它继承了所有超类公共方法。因此,完全可以调用超类公共方法,因为所有公共方法都是由子类继承的。这在Java中称为继承。
详细了解Polymorphism和Inheritance,然后了解他的使用情况
答案 1 :(得分:0)
它是一种对子类对象的多态SuperClass引用。
你为什么这样做?
Super s = new Child();
从s开始你可以调用super的所有方法,因为它指向一个孩子和孩子is-a
super,你也可以使用被覆盖的子方法。