继承
一:什么是继承
在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承。
二:如何判断类具有继承关系
类与类的关系:
1、has-a(组合)
2、is-a(继承)
各个子类里的相同特征和行为已经被放在了父类里,一般不需要再实现了.我们只需要在子类里实现它们的不同之处
三:继承中的实现
Java中继承的实现非常简单:extends
四:继承的优点
1.代码的可重用性
2.子类可以扩展父类的属性和方法
3.父类的属性和方法可用于子类
4.设计应用程序变得更加简单
五:所有类的根类都是Object
Øpublic final Class getClass();
Øpublic int hashCode();
Øpublic boolean equals(Object x);
Øprotected Object clone() throws CloneNotSupportedException;
Øpublic String toString();
Øprotected void finalize() throws Throwable;
Øpublic final void wait() throws InterruptedException;
Øpublic final void notify();
六:方法的重写
子类可以重写从父类继承的方法,从而允许子类添加或者改变父类中方法的行为。这称为方法重写,是OOP的特征之一。
当子类重写父类的方法时,必须遵循如下的规则:
子类的方法的返回值的类型、方法名和形式参数列表,必须和父类中的是相同的。如果子类中的方法与父类中的方法同名,
但是子类的方法改变了形式参数列表,那么这是方法重载,而不是方法重写。不要混淆这两个概念,二者的用法是完全不同的。
访问修饰符必须不小于父类中的访问修饰符。例如,如果父类的方法是public,那么子类的必须是public。如果父类的方法是protected,
那么子类必须是protected或public(public比protected访问权更大)。
子类中重写的异常不能抛出比父类更多的异常,其原因我们将在后面异常处理一章中讲解。
七:方法重写与方法重载的区别
方法的重写:子类中的方法与父类中的方法相同(方法名称、参数列表、返回类型)
方法重载:一个类中的方法与另一个方法相同,参数列表不同
重写体现的是父类与子类方法之间的关系;重载体现的是一个类的内部方法之间的关系。
八:构造方法与继承
不象一个超类的成员,超类的构造方法不能被它的子类继承.
你必须为一个子类定义构造方法,或者使用缺省的构造方法.
九:super关键字
psuper的两种用法:
1、super.***或super.***()代表每个类中指向父类对象部分的引用
2、super()代表调用父类中指定的构造器。
注意:
super()只能放在构造器的第一句!
先调用父类构造方法,再调用子类构造方法
要调用父类构造方法,使用关键字 super
子类构造方法的名称与类的名称相同
十:final关键字
public final class Test{
}
本类使用final修饰符修饰,表示不可以有继承的子类,所以称为终态类。
1.变量不能修改
2.类不可被继承
3.方法不能被重写