JavaSE笔记之<继承深入理解>
2015-06-26 19:42
661 查看
继承是面向对象程序设计的基石之一。它与组合的区别在于:组合只需在新的类中产生现有类的对象(只需将对象引用置于新类中即可),只是复用了现有程序代码的功能,而非它的形式,和现有类的关系是has-a(有一个的)关系;继承按照现有类的形式创建新类,编译器可以完成其中大部分工作。
当创建一个类时,总是在继承,要么隐式地继承于Object,要么显式地指出要继承的类。
继承的深入理解:组合和继承都在新的类中放置子对象,组合显式地这样做,而继承隐式的这么做。当创建一个子类对象时,该对象包含了一个父类的子对象(super),只要super能访问的成员,不论是数据成员、方法成员还是静态成员,只要能访问到,子类就有。当然,对父类子对象的正确初始化也是至关重要的,而且仅有一种方法来保证对该子对象的初始化:在子类构造器中调用父类构造器来执行初始化。即使不为子类创建构造器,编译器也会自动合成一个默认的无参构造器,该构造器将调用父类的无参构造器。但如果父类不是默认构造器,则子类必须显式创建构造器,并在构造器第一行调用父类构造器进行初始化。
在调用子类方法时,java会现在当前类的对象中寻找相同签名的方法,如果没有,就到super引用的父类对象中寻找,如果还没有就再往上,直到Object,有点类似于JavaScript的原型链。因为super是父类对象的引用,它访问不到父类中的private成员,所以子类就没有父类的private成员。在子类中有和父类方法签名和返回值类型完全相同的方法,则java会直接调用该对象的方法,就是重写了。可以在子类对象中通过super调用父类对象的方法。
当创建一个类时,总是在继承,要么隐式地继承于Object,要么显式地指出要继承的类。
继承的深入理解:组合和继承都在新的类中放置子对象,组合显式地这样做,而继承隐式的这么做。当创建一个子类对象时,该对象包含了一个父类的子对象(super),只要super能访问的成员,不论是数据成员、方法成员还是静态成员,只要能访问到,子类就有。当然,对父类子对象的正确初始化也是至关重要的,而且仅有一种方法来保证对该子对象的初始化:在子类构造器中调用父类构造器来执行初始化。即使不为子类创建构造器,编译器也会自动合成一个默认的无参构造器,该构造器将调用父类的无参构造器。但如果父类不是默认构造器,则子类必须显式创建构造器,并在构造器第一行调用父类构造器进行初始化。
在调用子类方法时,java会现在当前类的对象中寻找相同签名的方法,如果没有,就到super引用的父类对象中寻找,如果还没有就再往上,直到Object,有点类似于JavaScript的原型链。因为super是父类对象的引用,它访问不到父类中的private成员,所以子类就没有父类的private成员。在子类中有和父类方法签名和返回值类型完全相同的方法,则java会直接调用该对象的方法,就是重写了。可以在子类对象中通过super调用父类对象的方法。
相关文章推荐
- Java Socket应用(二)——java中InetAddress的应用
- spring 事务详解
- Java环境变量的配置及自己遇到的问题
- spring IOC 详解
- Java中的静态绑定和动态绑定
- Java中ArrayList类的用法(转)
- Java 持有对象
- java获取当前系统信息
- Java主线程等待所有子线程执行完毕再执行解决办法
- 深入探究JVM(1) - Java的内存区域解析
- ICTCLAS2015 Java版本的使用方法
- 【密钥算法】Java加密技术(八)---Java证书体系
- java设计模式之——代理模式
- 【密钥算法】Java加密技术(七)---ECC 数据加密算法
- 【密钥算法】Java加密技术(六)---DSA 数字签名算法
- 【密钥算法】Java加密技术(五)---DH 数据加密算法
- 【密钥算法】Java加密技术(四)---RSA数据加密算法(1)
- 【密钥算法】Java加密技术(二)---DES数据加密算法
- 【密钥算法】Java加密技术(三)---PBE 数据加密算法
- spring配置定时任务