本章目标:
理解继承的概念
掌握Java中继承的实现方式
理解方法的重写
理解最终类和最终方法
继承:
仔细观察,我们可以在几种员工身上发现一些共有的特征和行为,而它们中的大部分我们在 Employee中定义。而它们的不同仅是个别的地方。
在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承
含有共同属性的类称为父类(基类)
特有属性的类称为子类(派生类)
public class 子类名 extends 父类名 { }
类与类的关系:
1、use a
2、has-a(组合)
3、is-a(继承)
继承的优点:
1、代码的可重用性
2、父类的属性和方法可用于子类
3、子类可扩展父类的属性和方法
4、设计应用程序变得更加简单
在Java中,一个类只能有一个父类
所有类的根类都是Object
public boolean equals(Object x);
public String toString();
来自于Object,
protected void finalize()throws Throwable;----与构造方法对立,构造方法是构造对象,它是销
毁对象
final finally -----关键字
finalize -------方法,属于Object的方法,由垃圾回收器调用
方法重写:
子类把从父类继承而来的方法,重新实现一次
子类方法访问修饰符必须大于等于父类访问修饰符
重写要求:
1、方法名、返回类型、参数列表必须要保持一致
2、访问修饰符重写后必须大于等于重写前
3、重写后方法抛出的异常不能比重写前多(多,不是指个数而是指范围)
Object中自带一个toString方法,该方法的作用是返回对象的字符串描述
Object作为父类,在实现过程中不知道子类的具体形态,所以只能简单的返回:全类名@16进制引用
书写子类的程序员可以按自己的方式重写该方法,返回自定义的字符串描述
Object自带一个equals方法,该方法的作用是判定两个对象在业务逻辑下是否相等
Object作为父类,在实现过程中不知道子类的具体业务逻辑,所以只能简单的返回引用是否相等
书写子类的程序员按自己的业务逻辑重写该方法,返回真假。(绝不是简单的所有属性都一样才返回true)
由于构造方法不能被继承,所以构造方法不能被重写
super关键字:
this();调用本类的其他构造 ---------没有默认
super();调用父类的指定构造-------有默认,默认调用父类的公共无参构造
语法:两个都只能写在本类构造方法的第一句
this. ----指当前对象
可以看到本类的属性、行为,不受访问修饰符影响
可以看到来自父类的属性、行为,受访问修饰符限制
super. --指当前对象的父类对象部分
看不到本类的任何属性、行为
可以看到来自父类的属性、行为,受访问修饰符限制
结论:调用重写后的方法时,this.得到的是重写后子类的实现,super.得到的是重写后父类的实现,只有这种情况根据需求选用,其余时候尽量使用this.操作
final关键字:
如果final修饰了一个类,这个类就叫做最终类或终态类,不能被继承
如果final修饰了一个方法,这个方法就不能被重写
原文:http://www.cnblogs.com/wuhao-bky/p/6395115.html