Java基础九父类子类

is-a关系是继承的一个明显特征,关键字extens表示继承
关键字extends表示正在构造的新生类生于一个已经存在的类,已存在的类成为超类(superclass)、基类(baseclass)或父类(parent class);新类称为子类(subclass)、派生类(derived class)或孩子类(child class)。
一继承的层次:继承并不仅仅限于一个层次,由一个公共超类派生出来的所有类的集合就是继承层次。在继承的层次中,从某个特定的类到其组向的路径被称为该类的继承链,一般来说,一个祖先类可以拥有多个子孙继承链。


二多态:有一个用来判断是否应该设计为继承关系的简单规则,就是is-a规则,它表明子类的每个对象也是超类的对象。eg:每个经理都是雇员,因此,将Manager类设计为Employee类的子类是显而易见的。

"is-a"规则其实就是我们设计模式中经常提到的里氏代换原则,任何父类出现的地方,子类一定可以出现。

 

三动态绑定:弄清楚调用对象方法的执行过程十分重要。下边来详细的了解一下:

A编译器查看对象的声明类型和方法名。假设调用x.f(param),并且隐式参数x声明为C类的对象。需要注意的是:可能存在多个名字为f,但参数类型不一样的方法。例如,可能存在方法f(int)和方法f(String)。编译器会一一列举所有的C类中名为f的方法和其超类中访问属性public且名为f的方法。(父类)

 

B接下来编译器将查看调用方法是提供的参数类型。如果在所有名为f的方法中存在一个与提供的参数类型完全匹配,就选择这个方法。这个过程被称为重载解析(overloadingresolution),例如调用x.f("hello")来说,编译器会挑选f(String),而不是f(int)。由于允许类型转换(int 可以转换为double),所以这个过程可能很复杂。如果编译器没有找到参数类型匹配的方法,或者发现经过类型转换后有多个方法与之匹配,就会报告一个错误。

至此编译器已经获得需要调用的方法名字和参数类型


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值