继承:
概念:指的是多个类有相同的属性和行为时,我们可以把这些属性和行为抽取到一个单独的类(称为父类或超类)中,那么这些类就无需再定义这些属性和行为,只需要继承那个类就好。多个类可以称为子类或者派生类。
关键字:extends
格式:Class 子类名extends 父类名{}
继承的特点:
a:Java只支持单继承,不支持多继承。也就是说一个类只能有一个父类,不能有多个父类。
b:java中支持多层继承
例:Class A{}
Calss B extends A{}
Class C extends B{}
继承中成员变量的关系:
创建一个父类A
public class A {
public static int num=9;
}
创建一个子类B
public class B extends A{
public static int num=3;
public static void main(String[] args) {
System.out.println(num);
}
}
结果:3
结论:在子类方法中定义一个变量
。先在子类局部返回找
。然后在子类成员范围找
。最后在父类的成员范围找
没有就在父类的父类去找,体现的其实是就近原则
继承中构造方法的关系:
子类中所有的构造方法默认都会访问父类中空参数的构造方法。
这是因为子类会继承父类的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。
每一个构造方法的第一句语句默认都是:super()
问题:如果父类中没有构造方法怎么办?
答:A:子类通过super去显示调用父类的有参构造方法
B:子类通过this去调用本类的其他构造方法
本类的其他构造方法也必须首先访问了父类构造。
继承中成员方法的关系:
A:方法重写:
概念:子类中出现了和父类中一模一样的方法生明,也称为方法覆盖,方法复写。
使用特点:如果方法明不同,就调用对应的方法
如果方法名相同,最终使用的子自己的
B:方法重写的应用:
当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类中的方法,这样既沿袭了父类的功能,又定义了子类特有的内容。如在公司,每个人都有自己的工作,大家都有工作这个行为,但是工作的内容却不相同,因此可以使用方法重写来解决这个问题。
C:方法重写的注意事项
。父类中的私有方法不能被重写
。子类重写父类方法时,访问权限不能更低
。父类静态方法,子类也必须通过静态方法进行重写(其实这个算不上方法重写,但是现象确实如此。)
final关键字
关键字是最终的意思,可以修饰类,成员变量,成员方法。
修饰类,