什么是继承
定义:继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

继承是Java面向对象编程技术的一块基石,因为它允许创建分等级参差的类。 继承可以理解为一个对象从另一个对象获取属性的过程

继承带来的好处(面试题可能会问到)
1.大大减少代码重复率,可以提升效率。
2.继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。
2.Java是单一继承,一个子类只允许有一个父类,可以多重继承,父类也可以有父类。

如何实现继承
在Java语言中继承使用关键字extends 来建立关系。

//从形状类中派生出矩形类
public class Rect extends Shape{
}
//从矩形类中派生出正方形类
public class Square extends Rect{
}


Java中继承的特点
Java值支持单以继承,饭可以多层继承
不能继承父类private的构造方法,但可以通过super去访问。

super关键字和子类方法中访问变量
1.子类对象中,代表父类的引用
2.super可以访问父类的非私有属性
3super可以访问父类的非私有方法
4.super可以访问父类的构造方法(写不写,构造方法的第一次调用必须先调用super的构造方法)

创建子类之前,必须先创建父类。父类的构造方法一定会执行到。
如果父类没有构造方法, 那么默认拥有无参构造方法,子类的构造方法可以省略super();
如果父类没有无参构造方法,只有有参构造方法, 子类的所有构造方法,必须显示的指定调用父类的有参构造方法

重载与重写的区别
1.重写需要方法名,返回值,参数列表完全相同,重载需要方法名相同,参数列表不同,可以有不同的返回值。
2.重写访问权限大于父类,而重载不做要求。
3重写发生在子类与父类之间,而重载发生在本类中
4.private和final的方法不允许被重写。

抽象类与抽象方法

java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和
所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现

使用抽象类和抽象方法时必须注意
* 抽象方法必须放在抽象类中。
* 抽象类不能用new实例化对象
* 抽象方法必须由子类来进行重写。
* 只要包含一个抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他方
法。
* 抽象类中可以包含具体的方法,当然也可以不包含抽象方法。
* 子类中的抽象方法不能与父类的抽象方法同名。
* abstract不能与final并列修饰同一个类。
* abstract 不能与private、static、final或native并列修饰同一个方法。