格式:
class 子类名 extends 父类名 {}
好处:
A:提高了代码的复用性
B:提高了代码的维护性
C:让类与类之间产生了关系,是多态的前提
类与类产生了关系,其实也是继承的一个弊端:类的耦合性增强了。
开发的原则:低耦合,高内聚。
耦合:类与类的关系
内聚:就是自己完成某件事情的能力
1. 继承的注意事项:
a) JAVA是(只支持)单继承:一个类只能有一个直接的父类
Java支持多层继承(继承体系)。//儿子继承父亲,父亲继承爷爷。
b) 子类可以继承父类所有的成员变量与成员方法(包括private)。
子类可以继承父类private的成员,但不能使用。
c) 子类不能继承父类的构造方法。(可使用super关键字)
d) 若子类和父类中的成员变量或方法名称一样,在子类方法中访问一个变量的查找顺序:
a:在子类方法的局部范围找,有就使用
b:在子类的成员范围找,有就使用
c:在父类的成员范围找,有就使用
d:如果还找不到,就报错。
class Father { protected int aaa = 20; } class Son extends Father { private int aaa = 30; public void show() { int aaa = 40; System.out.println(aaa); // 40 System.out.println(this.aaa); // 30 System.out.println(super.aaa); // 20 } }
2. 访问权限:类(顶层类)只能使用public与默认的访问权限修饰。
3. JAVA中类不能确定自己是否被继承。
4. 方法的重写(方法的覆盖)
a) 子类根据需要重写父类中的方法。
b) 重写的方法要与被重写的方法具有相同的方法名,参数列表,返回类型。
c) 重写方法的访问权限要大于等于被重写方法的访问权限。
d) 重写方法声明的异常必须小于等于被重写方法声明的异常(当父类的方法声明了异常,子类重写的方法可以不声明异常。如果子类重写的方法声明了异常,必须小于等于父类方法声明的异常)。
e) 父类静态方法,子类也必须通过静态方法进行重写。
static不能产生重写,但现象确实如此,为什么算不上方法重写,因为在多态中这种现象不成立。
f) 父类中私有(private)方法不能产生重写。(可以被“重写”,没有重写的效果,所以并不叫重写)
5. super关键字:在子类中引用父类中的成员(通常,在子类中引用父类同名的成员)。
this和super的用法:
引用成员:
this.成员变量 调用本类的成员变量
super.成员变量 调用父类的成员变量
this.成员方法 调用本类的成员方法
super.成员方法 调用父类的成员方法
引用构造方法:
this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。
super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。
6. 继承中的构造方法
a) 子类会在自己每一个构造方法的第一行使用super()调用父类无参的构造方法。//如果不是放在第一条语句上,就可能对父类的数据进行了多次初始化。
子类构造方法执行前默认先执行父类的无参构造方法
b) 当父类没有无参的构造方法时,而子类也没有调用父类有参数的构造方法,则编译失败。