继承的格式:
格式:public class 子类名 extends 父类名{ }
范例:public class Zi extends Fu{ }
Fu:是父类,也被称为基类,超类
Zi:是子类,也被称为派生类
继承中子类的特点:子类可以有父类的内容,子类还可以有自己特有的内容
继承的好处:提高了代码的复用性(多个类相同的成员可以放入同一个类中)。 提高了代码的可维护性(如果方法的代码需要修改,修改一处就可以了)。
继承的弊端:继承让两个类之间产生了关系,类的耦合性增强了,当父类发生变化时子类也不得不随着发生改变,削弱了子类的独立性。
那么什么时候使用继承呢?(什么是什么的关系)
假设:我们有两个类A和B,如果他们满足A是B的一种,或者B是A的一种,就说明,他们存在继承关系,这个时候就可以考虑使用继承来体现,否则不能随意使用继承。如:动物,狗。水果,苹果。苹果和香蕉则没有继承关系。
继承中变量的访问特点:在子类方法中访问一个变量,首先会在子类局部范围找,也就是方法中找,如果找不到就会在子类成员范围中找,如果还找不到,就会在父类成员范围中找,如果还找不到就会报错,而不会找父类的父类。
这里介绍一个关键字:super
super关键字的用法和this关键字的用法类似。this:代表本类对象的引用。(this关键字指向调用该方法的对象,一般我们是在当前类中使用this关键字,所以我们常说this代表的是本类对象的引用)super:代表父类存储空间的标识(可以理解为父类对象的引用)。比如你在子类方法中访问一个本类的变量,你就可以用this.变量名访问,如果你要访问父类的变量,你就需要用super.变量名来访问。
super和this都可以访问成员变量,成员方法,和构造方法。格式如下:
this.成员变量----------------访问本类成员变量
super.成员变量-----------------访问父类成员变量
this(......)---------------------访问本类的构造方法,可以有参数
super(......)--------------------访问父类构造方法,可以有参数
this.成员方法(....)-----------------访问本类的成员方法,可以有参数
super.成员方法(......)----------------访问父类的成员方法,可以有参数
继承中成员方法的访问特点:通过子类对象访问一个方法,首先会在子类成员范围中找,如果找不到则在父类成员范围中找,如果还找不到就报错,不会去父类的父类去找。
方法重写:子类中出现了和父类中一模一样的方法声明
方法重写的注意事项:私有方法不能被重写(父类的私有成员子类是不能继承的)。子类方法访问权限不能更低(public>默认>私有)
方法重写的应用:当子类需要父类的功能,而功能主体子类又有自己特有内容时,可以重写父类中的方法,这样,即拥有了父类的功能,又定义了子类特有的内容
@Override:这是一个注解,可以帮助我们检查重写方法的方法声明的正确性。
Java中继承的注意事项:Java中类只支持单继承,不支持多继承,但是Java中类支持多层继承。