黄金网站,焦作官网网站推广工具,网站备案表,无锡企业网站制作价格父类 变量名 new 子类#xff08;#xff09;#xff1b;对象的多态性#xff1a;父类的引用指向子类的对象
Java引用变量有两个类型#xff1a;编译时类型和运行时类型。编译时类型由声明 该变量时使用的类型决定#xff0c;运行时类型由实际赋给该变量的对象决定。简…父类 变量名 new 子类对象的多态性父类的引用指向子类的对象
Java引用变量有两个类型编译时类型和运行时类型。编译时类型由声明 该变量时使用的类型决定运行时类型由实际赋给该变量的对象决定。简 称编译时看左边运行时看右边。
若编译时类型和运行时类型不一致就出现了对象的多态性(Polymorphism)。 多态情况下“看左边”看的是父类的引用父类中不具备子类特有的方法 “看右边”看的是子类的对象实际运行的是子类重写父类的方法。
若子类重写了父类方法就意味着子类里定义的方法彻底覆盖了父类里的同名方法系统将不可能把父类里的方法转移到子类中。 对于实例变量则不存在这样的现象即使子类里定义了与父类完全相同的实例变量这个实例变量依然不可能覆盖父类中定义的实例变量 子类中重写了与父类的方法在多态情况下将此时父类的方法称为虚拟方法父类根据赋给它的不同子类对象动态调用属于子类的该重写方法。这样的方法调用在编译期是无法确定的。
一个引用类型变量如果声明为父类的类型但实际引用的是子类对象那么该变量就不能再访问子类中添加的特有的属性和方法。 示例1
示例2
public class Test {
public void method(Person e) {
// ……
e.getInfo();
}
public static void main(Stirng args[]) {
Test t new Test();
Student m new Student();
t.method(m); // 子类的对象m传送给父类类型的参数e
}
}