OOP02-01(继承+方法重写+继承内存图+final关键字)

目录

继承

引言

继承的概念

官方定义:

继承的特征(注意事项)

继承关系的快捷键

方法重写

定义

方法重写的概念及格式

方法重写的注意事项

方法重写的便捷方式

重写toString方法

继承的内存图示

final关键字


继承


引言


现实中的事物之间往往存在关系
        如:桌子是家具的一种;汽车是交通工具的一种


继承的概念


官方定义:


从已有类中派生出新类
新类能继承已有类所有的成员变量及成员方法
新类还可添加扩展新的功能


用父亲生出孩子,孩子能继承父亲的特征和行为,孩子还可以学习更多技能! 
例如: 父亲长的帅,孩子继承其优点,长得帅,并且孩子长得更高更壮、又会编程


继承的特征(注意事项)


子类无法使用父类的私有化成员
        子类可以继承父类的全部成员,不过私有成员不可见而已(孩子刚出生时继承不了 父亲的偷藏的私房钱小金库)


子类无法继承父类的构造方法
        继承关系,只能让子类直接使用父类的非私有成员变量和成员方法


一个类可拥有多个子类,但只能拥有一个父类
        extends后面只能写一个父类,写多个父类会报错
        小技巧: 类名上按Ctrl+H 查看继承树(类型等级数)


Java中所有的类(除Object以外),都拥有父类
        所有Java类都有父类,要么是程序员定义,要么是Java自动定义继承Object类


Object类万用类型
        Object类就是Java最顶层的类了,相当于祖先的地位,
是所有类的父类,唯独Object自己没有父类


继承关系的快捷键


类名上:Alt+Enter
选择:  Create subclass (创建子类)


方法重写

定义


有时,子类不想沿用父类的某个老方法
而是在子类内部将老方法内部,代码全部重新编写,这样的步骤就是方法重写


方法重写的概念及格式


官方定义: 子类可以重新定义继承过来的父类方法,这个重新定义的过程叫做方法重写
方法重写发生在子类中


方法重写: 方法的替代 /  方法的覆盖
这样子类调用方法时,就会只调用我们定义的新方法
方法重写标准格式: 返回值类型  方法名  参数列表  都相同


因为方法重写是发生在子类中的
所以会影响子类,不会影响父类


方法重写的注意事项


方法上加入@Override可检查方法是否重写
子主题 1@Override : 程序会在检查方法是否为重写方法。为重写方法,正常。 不为重写方法,报错


子类方法重写时,返回值类型与父类相同甚至更窄(了解)
例如:父类方法返回值类型使用 Object (最宽泛的返回值类型,什么都能返回) 
子类方法返回值类型使用 Object 没问题, 也可以定义更窄小的 String。


方法重写的便捷方式


子类中,按Alt+Enter 弹出窗口选择Override Methods选择需要重写的父类方法点击ok
Ctrl+O也可以进行方法重写


重写toString方法


由于 Object 是所有类的父类,所以所有的类都具备 Object 中的方法。 
Object 类的 toString 方法是非常常用的。
例如:System.out.println(对象); 就会默认调用 对象.toString()方法展示字符串。
该方法返回字符串:类名 + ‘@’ + 十六进制内存地址。 
但 通常我们获取其类名和地址是没有任何意义的。 


继承的内存图示


有继承关系的图中,创建对象的顺序永远是 先父后子


继承树上从子类开始找,找到就执行。找不到就接着向上翻,翻不到就报错


继承中方法的执行顺序
        如果子类有此方法,直接执行子类方法
        如果子类无此方法,执行父类
        父类找不到,找父类的父类,直到找到为止
        如果整个继承树上都找不到该方法,直接编译报错


总结:
创建对象顺序: 孩子兜里有个爸爸。(爸爸兜里有爷爷)
使用方法顺序: 先孩子,后爸爸,再爷爷。找到就立即执行!


final关键字


final 意思是最终的,不可改变的


final 修饰类,类无法被继承
final 修饰方法,方法无法被子类重写
final 修饰常量,常量必须赋值,且无法被二次赋值


注:常量的数据类型无论是基本数据类型还是引用数据类型都无法进行栈内存的二次赋值。
引用数据类型的常量,虽然无法进行二次赋值,但通过 get/set 方法,可以改变对象的成员变量数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值