类和对象之继承以及方法的重写和重载

一、面向对象的三大特征

  • 封装
    • 概念

      就是把属性方法放到一个类中,后面方便调用

  • 继承
    • 继承就是代码的复用,是子类复用父类的代码,父类是用不了子类的代码的

  • 多态

二、继承

前面已经列举了面向对象的三大特征,这篇blog主要来讲一下什么是继承。

2.1 继承的概念

继承就是代码的复用,是子类复用父类的代码,父类是用不了子类的代码的.

父类是子类当中的共性

2.2 什么时候用继承

当类和类之间,存在相同的内容,并满足子类是父类中的一种,就可以考虑使用继承从而优化代码。

比如:

Person(姓名、年龄)
student(听课)teacher(授课)

2.3 继承方式

父类即类与类之间中的共性。

继承就是代码的复用,是子类复用父类的代码,父类是用不了子类的代码的

public class 子类 extends 父类

 

 

2.4 继承特点

  1. Java只支持单继承,不支持多继承,但支持多层继承。
    多层继承:子类A继承父类B,父类B可以继承父类C

  2. 子类只能访问父类中非私有的成员

这里涉及到private关键字,也就是权限修饰符

private关键字
概念
  1. 是一个权限修饰符
  2. 可以修饰成员(成员变量和成员方法)
  3. 被private修饰的成员只能在本类中才能访问,在其它类就不能用了

 同时,在private修饰的变量和成员当中,由set和get方法进行赋值和获取值

set:给成员变量赋值 get:对外提供成员变量的值

idea快捷键:alt+insert,然后选择setter and getter可以快速创建get和set方法以及相关变量

按住shift并点击最后一个或者ctrl+a全选即可一键创建全部set和get 

2.5 子类到底可以继承父类中的哪些内容

2.5.1 构造方法

不管是否私有,都不可以继承

reason:被public修饰的类一定要和文件名一致,需要手动修改,直接用alt+insert直接创建更方便

2.5.2 成员变量

能继承但是不能用

2.5.3 成员方法

可以用虚方法表当中的

只有父类中的虚方法表才能被子类继承

虚方法即

  1. 非private
  2. 非static
  3. 非final

2.6 继承中的访问特点

2.6.1 成员变量的访问特点

就近原则:谁离我近我就用谁【适用于啥也不加】

super调用:直接访问父类,详情见图

2.6.2 成员方法的访问特点

直接调用满足就近原则:谁离我近,我就用谁
super调用,直接访问父类

先在本类中查看eat和drink方法,就会调用子类的,如果没有,就会调用父类继承下来的eat和drink方法

2.6.3 构造方法的访问特点

○父类中的构造方法不会被子类继承。
○子类中所有的构造方法默认先访问父类中的无参构造,再执行自己。

 原因

子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据。子类初始化之前,一定要调用父类构造方法先完成父类数据空间的初始化。

在执行子类之前,子类会先创建一个父类

三 成员变量和局部变量

成员变量:类中方法外的变量

局部变量:方法中的变量

区别

图片截图自黑马

四 方法的重写

当父类的方法不能满足子类现在的需求时,需要进行方法重写

如果发生了重写,子类中的虚方法会覆盖

书写格式
在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类这个方法是重写的方法。


@Override重写注解

@Override是放在重写后的方法上,校验子类重写时语法是否正确。
加上注解后如果有红色波浪线,表示语法错误。
建议重写方法都加@Override注解,代码安全,优雅!

注意事项

1.重写方法的名称、形参列表必须与父类中的一致。
2.子类重写父类方法时,访问权限子类必须大于等于父类(暂时了解:空着不写<protected<public)
3.子类重写父类方法时,返回值类型子类必须小于等于父类
4.建议:重写的方法尽量和父类保持一致。
5.只有被添 加到虚方法表中的方法才能被重写

五 this和super使用总结

this:理解为一个变量,表示当前方法调用者的地址值:
super:代表父类存储空间。

 this的内存原理

this的本质:代表方法调用者的地址值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值