Java上转型、隐藏、覆盖与动态绑定

对象的上转型即声明一个父类类型的变量,但将子类的实例赋给了它。或叫父类变量指向了子类对象。有什么意义呢?因为子类是对父类的改进和扩充,所以一般子类在功能上较父类更强大,属性较父类更独特。定义一个父类类型的引用指向一个子类的对象既可以使用子类更强大的功能,又可以抽取父类的共性。

例如:

People p1=new Student();//赋值相容,上转型,子类对象即是父类对象
Student s1=new People();//赋值不相容,编译错误,父类对象不是子类对象

1. 对于成员,如果父类有,子类没有,则子类继承;如果父类没有,子类有,则属于子类增加的;

2. 如果父类子类都有,便属于隐藏或覆盖。其中对于成员变量静态方法,属于隐藏;对于实例方法,属于覆盖。

3. 一般的,子类对象调用子类的成员,父类对象调用父类的成员。但对于上转型的对象,则调用成员变量和静态方法时,调用的是父类的,因此叫隐藏成员变量和静态方法。

对于成员变量和静态方法,父类的成员变量和静态方法并没有被子类抹去,子类的隐藏了父类的。上转型对象引用的是父类的。

对于实例成员方法,子类的覆盖父类的。上转型对象引用的是子类的。这种方式称为动态绑定

更多知识,详见:https://www.cnblogs.com/shakinghead/p/7445831.html

原创文章 97 获赞 43 访问量 1万+

猜你喜欢

转载自blog.csdn.net/shao_yc/article/details/105391102
今日推荐