Java学习day027 继承(继承层次、多态、理解方法调用、阻止继承、强制类型转换)

使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识。

day027  继承(继承层次、多态、理解方法调用、阻止继承、强制类型转换)


1.继承层次

继承并不仅限于一个层次。例如,可以由Manager类派生Executive类。由一个公共超类派生出来的所有类的集合被称为继承层次(inheritancehierarchy),如下图所示。在继承层次中,从某个特定的类到其祖先的路径被称为该类的继承链(inheritancechain)。

通常,一个祖先类可以拥有多个子孙继承链。例如,可以由Employee类派生出子类Programmer或Secretary,它们与Manager类没有任何关系(有可能它们彼此之间也没有任何关系)。必要的话,可以将这个过程一直延续下去。

                                          


2.多态

有一个用来判断是否应该设计为继承关系的简单规则,这就是“is-a”规则,它表明子类的每个对象也是超类的对象。例如,每个经理都是雇员,因此,将Manager类设计为Employee类的子类是显而易见的,反之不然,并不是每一名雇员都是经理。

“is-a”规则的另一种表述法是置换法则。它表明程序中出现超类对象的任何地方都可以用子类对象置换。

例如,可以将一个子类的对象赋给超类变量。

Employee 3;
e = new Employee(...);// Employee object expected
e = new Manager(...);// OK, Manager can be used as well

在Java程序设计语言中,对象变量是多态的。一个Employee变量既可以引用一个Employee类对象,也可以引用一个Employee类的任何一个子类的对象(例如,Manager、Executive、Secretary等)。

前面的程序中已经看到了置换法则的优点:

Manager boss = new Manager(. . .);
Employee[] staff = new Employee[3];
staff[0]=boss;

在这个例子中,变量stafflO]与boss引用同一个对象。但编译器将staff[0]看成Employee对象。这意味着,可以这样调用

boss.setBonus(5000);//OK

但不能这样调用 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值