继承与抽象类

继承

1、概述
继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成的一种关系体系。
2、格式&使用
格式:class 子类 extends 父类{}
使用情况:多个类有共同的成员变量和成员方法,抽取到另外一个类中(父类),再让多个类继承这个父类,我们的多个类就可以获取到父类中的成员了。
3、特点
(1)类只支持单继承,不允许多继承(一个类只能有一个直接父类)
(2)多个类可以继承一个父类
(3)多层继承是可以的,即一个类的父类可以再去继承另外的父类,例如:C继承B,B继承A
(4)子类和父类是相对概念,一个类某个类的同时,也可以是另一个类的父类
4、继承中成员变量的特点
(1)子类只能获取父类非私有成员
子父类中成员变量的名字不一样直接获取父类的成员变量
子父类中成员变量名字是一样的获取的是子类的成员变量
(2)就近原则
如果有局部变量就使用局部变量
如果没有局部变量,有子类的成员变量就使用子类的成员变量
如果没有局部变量和子类的成员变量,有父类的成员变量就使用父类的成员变量
(3)super
super可以获取父类的成员变量和成员方法,用法和this是相似的
5、成员方法特点&方法重写
(1)子类中没有这个方法,调用父类的
(2)子类中重写了这个方法,调用子类的
方法重写:在子父类中,子类的方法和父类的完全一样,子类重写了父类的方法(覆盖),当子类重写父类方法后,使用子类对象调用的就是子类的方法
6、重写的应用场景&注意事项
(1)应用场景
当父类的方法不能完全满足子类使用的时候,既可以保留父类的功能(沿袭、传承),还可以有自己特有功能
(2)注意事项
不可以重写父类私有成员方法,压根就看不到父类私有成员
子类重写父类方法,权限必须大于等于父类方法的权限
注解
@Override:方法重写,说明下面的方法是重写父类的方法
7、继承中构造方法执行顺序
(1)super(实参列表); 在子类的构造方法中使用,用来调用父类中的构造方法(具体哪一个由传递的参数决定),并且只能在构造方法第一行使用
(2)this(实参列表); 在类的构造方法中使用,用来调用本类中的其他构造方法(具体哪一个由传递的参数决定),并且只能在构造方法的第一行使用
8、this与super区别
(1)this
当前对象的引用
调用子类的成员方法
在子类的构造方法第一行调用子类其他构造方法
(2)super
子类对象的父类引用
调用父类的成员变量
调用父类的成员方法
在子类的构造方法第一行调用父类的构造方法
9、继承的优缺点
优点:提高代码的复用性;提高代码的可维护性
缺点:类的耦合性增强(开发原则是高内聚低耦合)
内聚:自己完成某种事的能力
耦合:类与类的关系

抽象类

1、概述
分析事物发现共性内容,父类只知道子类应该包含什么样的方法,但是无法准确知道子类如何实现这些方法。方法功能声明相同,但方法功能主体不同,这时也可以抽取,但只抽取方法声明,不抽取方法主体,此方法就是一个抽象方法。
(1)abstract:关键字,用于修饰方法和类
(2)抽象方法:不同类的方法是相似,但是具体内容又不太一样,所以我们只能抽取他的声明,没有具体的方法体,没有具体方法体的方法就是抽象方法
(3)抽象类:有抽象方法的类必须是抽象类
注意:一个类继承了抽象类需要重写他所有的抽象方法,否则这个类就是抽象类
2、特点
抽象方法只能在抽象类里
抽象类和抽象方法必须被abstract修饰
抽象类和类的关系是继承
抽象类可以有非抽象的方法
抽象类不能创建对象(不能被实例化)
一个类继承了抽象类要么重写所有的抽象方法,要么他自己就是抽象类
3、抽象类的成员特点
(1)成员变量
可以有成员变量
可以有常量
(2)成员方法
可以有抽象方法
可以有非抽象方法
(3)构造方法
可以有构造方法,需要对抽象类的成员变量进行初始化
4、抽象类的细节
(1)抽象类关键字abstract不能与private、final、static关键字共存
private:私有方法无法通过子类继承,abstract必须要子类继承实现这个方法,矛盾
final:抽象方法不能与final共存,是因为抽象方法后期需要被子类重写,一旦加final就无法重写
static:一旦加static,我们就可以通过类名直接访问抽象方法,由于抽象方法没有方法体,没有任何意义,也不允许这么做
(2)抽象类可以不定义抽象方法
不让该类创建对象,方法可以直接让子类使用
(3)抽象类是否有构造函数
有,抽象类的构造函数是有子类的super语句调用的,用于给抽象类中的成员初始化

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值