继承、抽象

继承

概念
当多个类中具有相同的成员变量和成员方法时,把这些相同的成员抽取出来,放到另一个类中,当某个类需要这些成员时,就不需要再写一遍直接继承该类即可

注意:java中只支持单继承,不支持多继承,支持多层继承

定义
继承是描述两个类之间的关系
类A继承了类B,那么类A会自动拥有类B中非私有的成员,这个过程就是继承
类A称为子类、类B称为父类

继承的格式

public class 父类{
	//共有成员
}
public class 子类1 extends 父类{
	//子类可以添加自己特有的成员
}
public class 子类2 extends 父类{
	//子类可以添加自己特有的成员
}

继承的好处

提高了代码的可复用性
给多态做了前提
继承的特点(super的作用)

1.继承后成员变量的特点
父子类中的成员变量不同名是不会有任何问题,若同名会根据就近原则,在子类中优先访问子类自己的成员变量

this、super关键字区分变量的不同
this:用来区分本类中成员变量和局部变量的同名情况
super:用来区分子类的成员变量和父类的成员变量同名的情况

但在开发中是不会是父子类的成员变量同名的!所以了解即可

2.继承后成员方法的特点
如果父子类的成员方法不同名,是不会出现任何问题的
如果父子类的成员方法同名了,根据就近原则在子类中优先调用子类自己的方法,在子类的方法中,可以使用【super.方法名()】指定调用父类继承而来的方法

3.继承后构造方法的特点
在说构造方法继承的情况前,先了解下构造方法自身的特点
不写任何返回值,void也不写
方法名必须和类名保持一致
由于构造方法的特殊性,所以构造方法不存在继承
方法的重写

什么是重写:
在子类中出现了和父类一摸一样的方法(方法的声明)那么子类中的方法被称为重写的方法

重写的应用
当子类继承了父类的方法但是发现某些方法的功能比较low时那么子类可以重写此方法
在实际开发中会继承jdk中的类重写某个不满意的方法

注意:
子类方法重写父类方法,必须要保证权限大于或等于父类权限
如果父类的方法是私有的就没有重写私有方法的这种说法,因为私有方法不能继承
this、super总结(访问变量、调用方法)

在子类中访问变量
this.成员变量名;
访问子类自己的成员变量,如果子类不存在该成员变量,也会访问父类继承而来的成员变量
super.成员变量名;
直接访问父类继承而来的成员变量
这里的成员变量是什么?
优先局部变量,再去子类的成员变量,再去父类继承而来的成员变量

在子类中调用方法
this.成员方法名();
调用子类自己的成员方法,如果子类没有该方法,也会调用父类继承而来的成员方法
super.成员方法名();
直接调用父类继承而来的成员方法

所以只是单单是 成员方法名(); ==> 等价于 this.成员方法名();
扩展:this和super访问构造

this(参数):
调用本类的其他构造,具体是哪一个构造,由参数列表决定
super(参数): 调用父类的构造

子类的所有构造,默认第一行都会有一句代码,super(),调用父类的无参构造
因为Java设计之初遵循了一个原则: 单一职责

父类继承过来的成员变量,由父类的构造进行初始化
子类自己的成员变量,由子类的构造进行初始化
抽象类

由来
一个父类有多个子类,所有子类都重写某个方法,那么父类中的这个方法存在的价值就不高了
于是java提出了一个新的方法:抽象方法(抽象方法所在的类必须是抽象类)

抽象类概念:
只要该类是 abstract 修饰的,那么这个类就是抽象类
抽象类可以有抽象方法,也可以没有抽象方法

抽象类定义格式

public abstract class 类名{
	//可以有抽象方法也可以没有
}

抽象类使用
不能创建对象,java规定天生做父类,被子类继承的
其他子类继承抽象类后,必须重写抽象类中所有的抽象方法,才能创建对象否则子类还是抽象类

抽象方法
概念:只有方法的声明(方法的头部),没有方法的实现(没有实现体),并加上 abstract 修饰

抽象方法定义格式

public abstract 返回值类型 方法名(参数列表);

抽象类总结

抽象类存在的意义: 是作为父类
抽象方法存在的意义: 强制子类必须重写
抽象类不能创建对象
抽象类中,可以有构造方法
抽象类中,不一定包含抽象方法
抽象类的子类,必须重写抽象父类中所有的抽象方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值