您的位置:首页 > 编程语言 > Java开发

JavaSE笔记之<继承深入理解>

2015-06-26 19:42 661 查看
继承是面向对象程序设计的基石之一。它与组合的区别在于:组合只需在新的类中产生现有类的对象(只需将对象引用置于新类中即可),只是复用了现有程序代码的功能,而非它的形式,和现有类的关系是has-a(有一个的)关系;继承按照现有类的形式创建新类,编译器可以完成其中大部分工作。

当创建一个类时,总是在继承,要么隐式地继承于Object,要么显式地指出要继承的类。

继承的深入理解:组合和继承都在新的类中放置子对象,组合显式地这样做,而继承隐式的这么做。当创建一个子类对象时,该对象包含了一个父类的子对象(super),只要super能访问的成员,不论是数据成员、方法成员还是静态成员,只要能访问到,子类就有。当然,对父类子对象的正确初始化也是至关重要的,而且仅有一种方法来保证对该子对象的初始化:在子类构造器中调用父类构造器来执行初始化。即使不为子类创建构造器,编译器也会自动合成一个默认的无参构造器,该构造器将调用父类的无参构造器。但如果父类不是默认构造器,则子类必须显式创建构造器,并在构造器第一行调用父类构造器进行初始化。

在调用子类方法时,java会现在当前类的对象中寻找相同签名的方法,如果没有,就到super引用的父类对象中寻找,如果还没有就再往上,直到Object,有点类似于JavaScript的原型链。因为super是父类对象的引用,它访问不到父类中的private成员,所以子类就没有父类的private成员。在子类中有和父类方法签名和返回值类型完全相同的方法,则java会直接调用该对象的方法,就是重写了。可以在子类对象中通过super调用父类对象的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: