一:继承
通过extends关键字可以实现类与类的继承:
class 子类名 extends 父类名 {
}
父类:基类,超类
子类:派生类二:继承的作用
举个例子,学生和老师都属于人类学生类:
成员变量:name,age
构造方法:无参,带参
成员方法:getXxx()/setXxx(),eat(),sleep(),study()老师类:
成员变量:name,age
构造方法:无参,带参
成员方法:getXxx()/setXxx(),eat(),sleep(),teach()按照我们刚才对继承的概述,我们可以找一个父类。
人类: 成员变量:name,age 构造方法:无参,带参 成员方法:getXxx()/setXxx(),eat(),sleep() 学生类:继承人类就可以了。 老师类:继承人类就可以了。
三:继承的好处
A:提高了代码的复用性 多个类相同的成员可以放到同一个类中 B:提高了代码的维护性 如果功能的代码需要修改,修改一处即可 C:让类与类之间产生了关系,是多态的前提
注意:
A:Java只支持单继承,不支持多继承。
B:Java支持多层(重)继承(继承体系)。四:继承间构造方法的关系:
子类中所有的构造方法默认都会访问父类中空参数的构造方法(super())
为什么呢?
因为子类会继承父类中的数据,可能还会使用父类的数据。
所以,子类初始化之前,一定要先完成父类数据的初始化。
每个子类的构造方法的第一行,有一条默认的语句:
super();注意:仅仅是完成数据的初始化,创建对象目前必须用new申请空间。
假如父类没有无参构造方法,该怎么办呢?
A:调用父类的其他构造方法。带参构造。
怎么访问呢?
super(…)注意:
super(…)或者this(….)必须出现在第一条语句上。
因为如果可以放后面的话,就会对父类的数据进程多次初始化。所以,只能放在第一条语句上。建议:
永远给出无参构造方法。实例:
class Fu2{
public void show(){
System.out.println("fu2中的show方法");
}
public void method(){
System.out.println("fu2的method方法");
}
private void function(){
System.out.println("fu2的function方法");
}
}
class Zi2 extends Fu2{
public void show(){
System.out.println("zi2中的show方法");
}
public void sleep(){
System.out.println("睡觉的方法");
}
}
public class ExtendsDemo4 {
public static void main(String[] args) {
//创建zi2的对象
Zi2 z = new Zi2();
z.sleep();
z.show();
z.method();
//z.fuction();//子类无法继承父类中私有的方法
}
}
输出是:![这里写图片描述](http://img.blog.csdn.net/20170413143013427?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWWFwaHN0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)