面向对象的三大特征是封装、继承、多态。
所谓继承就是原有的代码结构上扩充新的功能,继承解决的是代码的重复问题,本次课题为了方便讲解,后面的类中的属性就暂时不适用private封装。
观察代码
发现了类的属性和方法都是重复的,要解决这样的问题最好将这些重复的操作(方法和属性)定义到一个公共的类中,之后如果其他类要使用到这些公共的操作只需要继承这个公共的类即可,这个公共的类被叫做父类,有人叫做超类,又叫做基类,继承的叫做子类或者派生类。一个父亲可以被多个子类继承(相当于一个父亲可以有多个孩子)。
定义父类【extends】
public class Student extends Person{
}
调用子类方法
public class Hello {
public static void main(String[] args) {
Student s = new Student();
s.setName("小明");
s.setAge(19);
s.setSex("男");
s.info();
}
}
继承了父类所有属性和方法,但是不能继承构造方法,这些公共的操作是继承过来的,但是如果子类需要有一些特有的操作,此时应该再子类中单独定义。
在子类中单独定义特有的操作
public class Student extends Person{
public void readbook() {
System.out.println("我在阅读文章!");
}
}
总结:
1.继承是为了代码的重复,以及后面可以实现多态。
2.继承的语法:【public class 子类 extends 父类{}】
3.子类除了可以继承父类的操作,也可以扩充自己新的操作,而且子类不能继承父类的构造方法。
4.一个父类可以有多个子类,但是一个子类只能有一个父类(这就是继承的局限性,叫做单继承局限),后面可以使用接口来解决单继承的局限。