面向对象的三大特征和反射(八股)

封装:

指的是把一个对象的状态信息(也就是属性)隐藏在对象内部,不允许外部对象直接访问对象的内部消息。但是可以提供一些可以被外部访问的方法来操作属性。

继承:

子类用有父类对象所有的属性和方法(包括私有方法和私有属性),但是父类中的私有属性和方法子类是无法访问的,只是拥有。

子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

子类可以用自己的方法去实现父类的方法。

多态:

标识一个对象具有多种状态,具体表现为父类的引用指向子类的实例

对象类型和引用类型之间具有继承/实现的关系

引用类型变量发出的方法调用的到底是哪个类中的方法,必须在程序运行期间才能确立。

多态不能调用"只在子类存在但是父类不存在"的方法

如果子类重写了父类的方法,真正执行的是子类覆盖的方法,如果子类没有覆盖父类的方法,执行的是父类的方法。

反射:

Java提供的一种机制,允许程序咋i运行时动态的获取类的信息,创建对象,调用方法,访问字段等。通过反射,程序可以在运行时查看和操作类的结构(如类的名称,方法,字段,构造方法),甚至动态加载类,反射是Java提供的强大功能,但也可能带来性能开销。

反射是否打破了封装性:

技术层面:反射绕过了Java编译器和运行期访问权限的检查,在技术层面确实打破了封装性。

设计层面:反射的破封装是开发者的主动选择,而非封装机制本身的失效。且Java通过安全管理器,模块系统对其作了限制。

相关推荐
万亿少女的梦16820 分钟前
基于Spring Boot的游戏交易管理系统设计与实现
java·spring boot·mysql·系统设计·交易管理
不做Java程序猿好多年35 分钟前
Java中 String、StringBuffer、StringBuilder 的区别详解
开发语言·python
会周易的程序员1 小时前
js-shm: 高性能 Node.js 共享内存模块
开发语言·javascript·c++·node.js·共享内存·shm
闲猫1 小时前
Agent工程实践:从WorkFlow到多Agent协作的落地笔记
java·服务器·前端
笨蛋不要掉眼泪1 小时前
Java虚拟机:常用参数
java·开发语言·python
happy_0x3f1 小时前
前端应用的离线暂停更新策略
开发语言·前端·php
亦暖筑序2 小时前
AgentScope-Java 入门:用 Middleware 审计 Agent 调用
java·ai编程·agentscope
shylyly_2 小时前
C++中的类型转换
开发语言·c++·匿名对象·隐式类型转换·拷贝优化
你驴我2 小时前
WhatsApp 消息撤回与编辑的幂等性设计实践
java·服务器·前端·后端·python
北冥you鱼2 小时前
Go 语言新手扫盲:指针 * 和 & 使用场景详解
开发语言·后端·golang