面向对象Part3
继承:
Extends在英文中的翻译是拓展.
但是java允许多重继承. 一条线.单线.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在JAVA中,除了Object类, 每个类都有一个直接父类.
Object类是最高类.
override方法的覆盖(复写):
当父类中的某个方法不符合子类中的特征的时候,子类需要覆盖父类的方法重新编写.
子类方法覆盖父类方法,如果调用子类的方法,方法名和父类相同也会执行子类的方法,如果子类找不到调用的方法才会去父类中寻找,父类找不到再继续向上找直到找到为止.
方法的覆盖语法很简单. 方法名完全相同,只有方法的内容不同.方法名粘贴复制即可.
只有方法才有覆盖的概念,字段没有覆盖的概念.
子类的访问权限必须大于等于父类的访问权限.private不存在覆盖. @override用来判断子类方法是否覆盖了父类的方法.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
super关键字:
需求:在子类方法中调用父类中被覆盖的方法.
使用super.方法
子类初始化的过程:
在创建子类对象之前会创建父类对象.创建子类对象会调用子类构造器,在调用子类构造器之前会调用父类构造器.而且是无参的父类构造器super()
如果父类构造器是被写出来的.且不是无参数构造器.那么就需要自己写super()初始化构造器.而不用系统默认的隐藏的无参数构造器.
并且super()要作为第一个语句.因为必须要先有爸爸再有儿子. 1
如果父类没有可以被子类访问的构造器,则不能存在子类.因为子类的创建要先有父类.
因为name是类私有, 用getName进行暴露.
因为如果在子类中加入name.age信息,那么就必须要降低父类中name.age的限制安全等级.降为protected甚至更低才可以在子类中调用. 这样不利于信息安全.
说我我们在父类中设置name和age然后通过GetName向外暴露. 这样做的同时就修改了父类的构造器,将父类的构造器设置了参数,相应的,我们就需要修改子类默认的super(),
将super()加上name,age参数 如果外界需要调用age和name通过getName就可以调用. this.要看清是谁来调用 如果是在Animal中调用this.name = name. 那么this.name指的是Animal的成员变量
如果在Public void say里调用的this.color, say是Fish的方法.那么this.color指的是类Fish的Color = private String color.
static不能与this或者super共存. static是类级别的, this和super是对象级别的. \
----------------------------------------------------------------------------------------------------------------------------------
Object类和常用类:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!