java继承与方法重写

继承

通过扩展一个类来建立另外一个类的过程,叫做继承(inheritance)

通俗地说,所谓继承,就是让类与类之间产生父子关系。

所有的类都直接或间接的继承自: java.lang.Object 被继承的类叫做父类(基类、超类) 继承的类叫做子类(派

生类)

**格式(**extends)

class 父类 { 
    // ... 
}
class 子类 extends 父类 { 
    // ... 
}

子类继承父类之后有什么效果?

子类拥有了父类的非私有成员(成员变量、成员方法)

继承的使用场景
1.向上抽取:
多个类中存在相同的属性和行为时,可以将这些内容提取出来放到一个新类中,让这些类和新类产生父子关系,实现代码复用。
2.向下扩展:
当需要扩展已有的类的功能时,可以通过继承已有的类,在子类中添加新功能或重新实现已有功能,对父类(已有的类)没有影响。

继承的优缺点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jZO5W618-1614674283805)(C:\Users\wukang\AppData\Roaming\Typora\typora-user-images\image-20210221105307245.png)]

使用变量遵循就近原则.
    先在局部位置找, 有就使用.
    没有就去本类的成员位置找, 有就使用.
    没有就去父类的成员位置找, 有就使用, 没有就报错.

 如果局部变量, 本类的成员变量, 父类的成员变量重名了, 如何解决?(重要!)
    直接写变量名:     局部变量.
    this.成员变量名:  本类的成员变量
    super.成员变量名: 父类的成员变量
结论:
    子类所有构造方法的第一行都有一个默认的super()用来访问父类的无参构造方法.
    如果父类没有无参构造, 可以通过super(参数)的形式访问父类的带参构造.
方法重写
概述:子类中出现和父类方法定义相同的方法的现象
解释:方法重写也叫方法的复写、覆盖 方法名、参数列表、返回值类型都相同
注意事项:
父类私有方法无法重写 子类方法访问权限不能小于父类方法 子类不能比父类方法抛出更大的异常(了解)
使用场景:扩展父类功能 父类功能过时,重新实现父类功能
Java中的访问权限修饰符(理解记忆!!!面试可能会问

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ga4DwLBA-1614674283808)(C:\Users\wukang\AppData\Roaming\Typora\typora-user-images\image-20210221163940755.png)]

总结:
private:强调给自己来使用
默认:强调的是给同包下的来使用
protected:强调的是给子类使用
public:强调的是给大家使用

方法重写和方法重载的区别[重要面试问!!!!]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DvfpZtzn-1614674283811)(C:\Users\wukang\AppData\Roaming\Typora\typora-user-images\image-20210221164356574.png)]

Java中继承的特点

单继承

Java只支持类的单继承,但是支持多层(重)继承

Java支持接口的多继承,语法为: 接口A extends 接口B,接口C,接口D…

私有成员不能继承

只能继承父类的非私有成员(成员变量、成员方法)

构造方法不能继承

构造方法用于初始化本类对象。

创建子类对象时,需要调用父类构造初始化该对象的父类内容,若父类构造可以被继承,该操作会造成调用的混乱。

继承体现了“is a”的关系

子类符合“is a(是一个)”父类的情况下,才使用继承,其它情况不建议使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nehzil-kino

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值