封装、继承、多态
封装:就是把类中的方法或者属性用private声明,封装到一起。属性的调用和赋值通过get和set方法;方法的调用可以在类创建一个公共方法,通过公共方法来调用类中的私有方法,之后通过对象调用公共方法来间接调用私有方法。
好处:隐藏对象和属性的实现细节,仅对外公开接口,数据更加安全。
继承:把A类和B类的共有属性和方法提取出来,放到一个父类中。通过继承父类来实现对属性和方法的操作。当父类只有一个有参构造器时,子类也必须要有父类全部属性的构造器,通过super()来调用哪一个构造器。
好处:提高代码的复用性和扩展性
多态: 对象或方法的多种形态,是OOP的三大特征之一,是建立在封装和继承之上。
方法多态:重写和重载
对象多态:
1、编译类型和运行类型可以不一致,编译类型一开始就定义了,不能变化
2、运行类型可以变化,可以通过getClass()查看编译类型
3、编译类型看=左边,运行类型看=右边
父类的引用指向子类的对象
输出结果为:
首先new Sub()先在堆中分配一个地址空间,假设为0x0011。里面有两个空间 count= 10,count = 20;sub指向0x0011,sub为编译类型,所以sub.count = 20,sub.display()先从本类开始找,所以输出20。Base base = sub,向上转型,编译类型为Base,运行类型还是Sub,base指向0x0011,成员看编译类型,所以base.count = 10,base.display则先从运行类型开始寻找,输出20
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY