JAVA学习--OOP
封装
封装是使用访问限制对类,属性和方法进行访问范围的限定。
如果不使用封装则会出现如下情况:
将属性私有化则只能通过一种方式进行该变类中的变量,原因是不能访问被私有化的属性和方法。
继承
继承需要使用到两个类,一个为子类,一个为父类。子类可以用父类的非私有的方法与属性。在调用子类的构造方法的时候会先调用其父类的构造方法。子类默认是调用父类的无参构造方法。如果父类重写了构造方法,那么子类要用super关键字类声明调用父类的构造方法。
在实例化子类对象时,子类可以自动向父类转型,父类不行向子类转型。实例化对象所用的方法取决于接收的数据类型,如果是父类数据类型,则不能使用子类的方法,如果是子类的数据类型,则可以使用父类的方法。
如果继承后子类重写了父类的方法,在创建子类对象时,则调用的是重写后的方法。如果数据类型向父类转型了,再次调用此方法时则会使用子类重写的方法,因为开辟内存空间时创建的是拷贝的子类的属性与方法。
多态
由于继承和重写机制,相同类型的对象,调用相同的方法,得到的结果可能不一样
动态多态:
静态多态:
抽象类
抽象类需要使用abstract 关键字声明类,抽象类里面可以写具体的方法,也可以写抽象的方法,但是抽象类不能被实例化。抽象类需要子类来实现,继承抽象类的子类如果也是抽象类,父类中的抽象方法可以不用实现。否则需要将父类中的抽象方法全部实现。抽象类中有构造方法,但不能被实例化。
接口
接口里只能定义抽象方法和常量
接口可以实现多继承的关系,但不能实现其他接口,接口中没有构造函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!