一、封装是面向对象程序设计的基础设计原则,核心是把控类内部信息的访问权限。我们可以用private关键字修饰类的属性,让属性只能在本类内部访问,再对外提供公开的get和set方法实现可控的读写操作。get方法按照规范命名,用来获取私有属性的值,返回值类型和对应属性保持一致。set方法用来给私有属性赋值,参数类型匹配属性的数据类型,方法名遵循首字母大写的命名规则。这种设计可以避免外部随意篡改属性数据,在set方法里还能加入数据校验逻辑,保障数据的合理性与安全性。
二、继承实现了类与类之间的is-a从属关系,通过extends关键字让子类复用父类的共性属性与方法,提升代码复用性和项目可扩展性。Java只支持类的单继承,一个类只能有一个直接父类,但可以通过多级继承形成间接的继承体系。子类无法继承父类的构造方法,属性和普通方法能否继承,由访问修饰符决定,private修饰的内容不能被继承,default只允许同包子类继承,protected允许所有子类继承,public可以在任意场景被继承。子类对不满足自身需求的父类方法,可以进行方法重写,重写需要保证方法名、参数列表、返回值类型和父类一致,访问权限不能比父类更严格。创建子类对象时会先完成父类对象的初始化,super关键字可以在子类构造方法中调用父类构造方法,也可以访问父类的属性与成员方法,使用时必须放在构造方法的首行。
三、多态建立在继承和方法重写的基础上,表现为父类引用可以指向子类对象。编译阶段父类引用只能调用父类定义的成员,运行阶段会根据实际对象类型执行子类重写后的方法。多态场景下存在两种引用转换方向,子类引用可以直接向上赋值给父类引用,也就是多态的常规写法。父类引用想要向下转为子类引用时,必须进行强制类型转换,为了避免类型转换异常,需要先用instanceof关键字判断引用实际存储的对象类型是否匹配目标类型。没有继承关系的两个类,相互之间不能做强制类型转换,编译阶段就会直接报错。 日常开发中这三个特性是配合使用的,先用封装做好类内部数据的权限管控,再用继承抽取通用逻辑搭建类体系,最后借助多态实现灵活的业务拓展。很多面试高频考点也出自这部分内容,比如this和super的区分、方法重载和重写的差异、访问修饰符的适用范围、多态转型的异常规避细节,把这些知识点理解透彻,就能扎实掌握Java面向对象的进阶能力,写出结构更规范、维护成本更低的代码。


