⽗类声明⼦类实例化对象详解
测试代码:
public class Employee {
public String name;
public String getType(){
return "Employee";
}
}
public class Manager extends Employee{
private int money;
public String getType(){
return "Manager";
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Employee A=new Manager();
A.name="Tom";
//A.money=2;//报错
实例化类和实例化对象String Type();
System.out.println(Type);//Manager
}
通过测试我们发现以下⼏点:
1. A对象可以使⽤从⽗类继承下来的⾮public属性
2. A对象⽆法使⽤Manager⼦类新增的money属性
3. A对象调⽤的⽅法是⼦类的⽅法
总结:⽗类声明⼦类实例化产⽣的对象使⽤的是⼦类从⽗类继承的⽅法和属性。
原理:
Employee A=new Manager();
实际是⽗类句柄指向⼦类对象空间,所以使⽤的属性和⽅法都是⼦类对象所有的。⽽因为是⽗类的句柄指向的只能是⽗类所拥有的属性和⽅法,所以指向的属性和⽅法实则⼜必须是是从⽗类继承⽽来的。
注意:
不能⽤⼦类声明⽗类实例化对象!
因为⼦类的句柄指向⽗类空间时,有可能有部分⼦类的属性⽅法是⽗类所没有的,因此,⼦类句柄⽆法指向有效的空间,编译⽆法通过。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。