第7章继承

继承:

我们由员工类Employee派生出2个新类:计时工Hourly和合同工Salary,使用extends关键字让它们继承自Employee
我们称Employee为父类(基类),Hourly和Salary为Employee的子类(派生类)
可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承使用extends关键字

单继承与多继承:

一个java类中只能有一个父类
某些OOP语言(例如C++)允许子类有多个父类。
但在Java中这是不允许的。在Java中,一个类只能有一个父类。

方法重写:

1子类可以重写从父类继承的方法,从而允许子类添加或者改变父类中方法的行为。这称为方法重写,是OOP的特征之一。
2当子类重写父类的方法时,必须遵循如下的规则:
子类的方法的返回值的类型、方法名和形式参数列表,必须和父类中的是相同的。如果子类中的方法与父类中的方法同名,但是子类的方法改变了形式参数列表,那么这是方法重载,而不是方法重写。不要混淆这两个概念,二者的用法是完全不同的。
访问修饰符必须不小于父类中的访问修饰符。例如,如果父类的方法是public,那么子类的必须是public。如果父类的方法是protected,那么子类必须是protected或public(public比protected访问权更大)。
子类中重写的异常不能抛出比父类更多的异常
2方法的重写:子类中的方法与父类中的方法相同(方法名称、参数列表、返回类型)
3方法重载:一个类中的方法与另一个方法相同,参数列表不同
2重写体现的是父类与子类方法之间的关系;重载体现的是一个类的内部方法之间的关系。
4构造方法与继承
不象一个超类的成员,超类的构造方法不能被它的子类继承.
你必须为一个子类定义构造方法,或者使用缺省的构造方法.

super关键字:

super的两种用法:

1:super.或super.()代表每个类中指向父类对象部分的引用.
2:super()代表调用父类中指定的构造器。
注意:
super()只能放在构造器的第一句!
super关键字执行过程:
super 先调用父类构造方法,再调用子类构造方法.
子类构造方法的名称与类的名称相同.

final关键字:

我们可以使用一个叫final的修饰符来实现。
public final class Test{
}
本类使用final修饰符修饰,表示不可以有继承的子类,所以称为终态类。
final 1变量不能修改 2类不可被继承 3方法不能被重写。

总结:

继承:子类继续父类的属性和行为
单继承和多继承:java中只能有一个父类C++中可以有多个父类
方法的重写:子类中的方法与父类中的方法相同(方法名称、参数列表、返回类型)
super: 代表每个类中指向父类对象部分的引用,代表调用父类中指定的构造器
final: final 变量不能修改 类不可被继承 方法不能被重写