继承的概念:
当多个类之间有相同的特征和行为时,可以将相同的内容提取出来组成一个公共类,让多个类吸收公共类中已有特征和行为
而在多个类型只需要编写自己独有特征和行为的机制,叫做继承。
在java语言中使用extends(扩展)关键字来表示继承关系。
如:
public class Worker extends Person{} //表示Worker类继承自Person类
其中Person类叫做超类、父类、基类。
其中Worker类叫做派生类、子类、孩子类。
使用继承提高了代码的复用性,可维护性及扩展性,是多态的前提条件。
继承的特点:
1、子类不能继承父类的构造方法和私有方法,但私有成员变量可以被继承只是不能直接访问。
2、无论使用何种方式构造子类的对象时都会自动调用父类的无参构造方法,来初始化从父类中继承的成员变量,相当于在构造方法
的第一行增加代码super()的效果。
3、使用继承必须满足逻辑关系:子类 is a父类,也就是不能滥用继承。is a (是一个)
案例1:继承
父类Person
子类Worker
测试类:WorkerTest
结果:
总结:
1、从上可以得出,无论是调用无参构造方法还是有参构造方法,在准备阶段会调用父类的无参构造以初始化父类的成员变量。
默认系统会加上super()在构造方法第一行添加,我们也可以手动在构造方法第一行添加super();
super()代表父类,如果我们在子类中声明一个一模一样的show()方法,系统会默认调用子类的show()方法,如果我们
需要使用父类的show()方法添加以下代码即可:
super.show()
上述方法除了可以调用父类同名方法外,还可以传参:
父类show()-》(接收) 子类show()传递-》 测试类(传实参)
2、在上述案例中我们调用了无参与有参构造方法,在有参构造方法中我们可以使用super()方法传参这样可以调用父类的有参构造方法,
在结果中我们可以看出父类在准备阶段调用有参构造方法,初始化成员变量。
以后我们可以使用这种方法,不需要再在子类中重复编写setName、setAge等方法,利于代码管理与维护。
注意:
重载的概念并不能约束,以这种方式似乎可以同时使用子类以及继承自父类的show()方法。
案例2:
java中没有孙类的概念,person为父类-》teacher为直接子类-》computerTeacher为间接子类