前言
Java是一种面向对象的编程语言,那么它本身拥有着三大特征:分别是继承、封装、多态。当然有些地方也称它有四大特征:在前面的基础上多了一个抽象。而本篇主要是讲的继承这个特征的基础内容。
1.继承的概念
??继承是面向对象的三大特征之一,可以让子类获得父类的方法和属性,还可以在子类中重新定义和追加新的方法和属性。有继承关系后,子类不光有父类的属性和方法,也能拥有属于自己的属性和方法。当我们需要使用父类中的属性和方法时可以通过创建子类对象来引用这些方法和属性。
2.格式
?? public class 子类名 extends 父类名{};
3.类的各自称号
??父类也被叫作超类和基类,而子类又叫做派生类。继承的类叫作子类,被继承的类叫作父类。它们之间的构成关系的关键字是“extends”。
3.继承的好处和弊端
好处: ??1.提高了代码的复用性(拥有相同属性和方法的类可以通过继承父类,来减少代码的输入) ?? 2.提高了代码的维护性(当需要改变方法和属性时,可以通过直接修改父类中的方法和属性,来避免重复的工作内容) ??3. 建立类与类之间的联系,是多态的前提 弊端 ??继承关系增加了类与类之间的耦合性,一旦父类中的属性和方法改变,那么子类也会随之改变,这样就降低了子类的独立性
4.使用继承关系的原则
??只有当某一个具体事物中有大量的属性和行为都归属于一个范围较大的事物时,就可以使用继承。例:猫,动物:猫就是子类,动物就是父类
5.继承关系中访问特点
1.在子类的成员方法中找
2.在子类的成员变量中找
3.在父类的成员变量中找
4.如果都没有的话就报错,我门只看父类,不看父类的父类
6.super关键字的使用
super关键字与this关键字的用法相似 ??this引用本类中的对象 ??super是父类中的地址空间的标识(也可以理解为引用父类的对象) super内存图 ??在栈内存空间中会先出现main方法,然后执行main方法中的代码,当新建子类的对象后将在栈内存中存在,然后执行子类中的代码,内容会在堆内存中出现,而又调用了父类的参数,那么父类中的值会保存在super关键字开辟的空间中,也在堆内存中。 this和super的使用格式 分别有三种使用格式 this ??this.成员变量:访问本类中的成员变量 ?? this(…):访问本类中的构造方法 ??this.成员方法名(…):访问本类中的成员方法 super ??super.成员变量:访问父类中的成员变量 ??super(…):访问父类中的构造方法 ??super.成员方法名(…):访问父类中的成员方法
7.构造方法和成员方法的访问特点
继承中构造方法的访问特点 ??1.子类中的所有构造方法都会默认访问父类中的无产构造方法(1.因为子类会继承父类中的数据,甚至是使用父类中的数据,所有在完成子类初始化之前,先把父类初始化完成。2.每个子类构造方法的第一句话都是默认为super()) ??2.如果父类中的无参构造方法被注释或者只写了有参构造方法(1.子类中将会报错,因为子类的构造方法默认的是父类的无参构造方法,可以通过在子类的构造方法中手动添加super(父类有参构造方法的参数)2.最好建议:在父类中写上无参构造方法) ??3.子类中的构造方法被调用可以通过直接在测试类中定义子类的对象 ??4.父类中的构造方法被调用:无参构造方法被调用,可以不用操作,因为子类构造方法自带有super(),有参构造方法被调用则必须手动在子类中的构造方法中添加上super(参数)。 继承中成员方法的访问特点 ??1.通过子类的对象查找变量,先在子类中寻找 ??2.子类中没有,则在父类中查找 ??3.如果子类和父类中都没有的话,那么就会报错(父类的父类不考虑)
8.方法的重写
概述 ??子类中出现父类一摸一样的方法声明。 方法重写的应用 ?? 当子类需要父类方法的功能,而子类又有自己的特殊功能时,就可以使用方法重写,父类中方法的功能不需要写,只需要用super.方法名();进行调用即可 @Override ??1.这是一个注解 ??2.可以帮我们检查重写方法的方法声明的正确性 ??注意:在声明方法时加上了static后,在加上Override检查方法重写时会时会报错,不是说方法声明中不能加上static,只是因为加上static后不能完成多态的功能,所有@Override在检查时发现逻辑上行不通,所以才会报错。不能调用父类中的方法 ?? **注意2:**私有方法不能被重写(父类私有成员,子类不能继承) ?? **注意3:**子类访问权限不能更低(public>默认>私有)默认是指不要public和private这两个关键字
9.继承的注意事项
继承的注意事项 ??Java中规只能支持单继承,不支持多继承(一次性继承多个类) ??Java中支持多层继承
总结
??继承做为面向对象的三大特征之一,会给我们在编程的时候提供很多方便快捷的方法,可以让我们编程的难度和速度都有了很大的改善,请多多使用,熟练掌握。
|