FEATURED · 精选文章

Java 面向对象三大特性|封装、继承、多态完整笔记

发布时间 / 2026/8/29 4:39:46
来源 / 创域科博编辑部
栏目 / 资讯中心
Java 面向对象三大特性|封装、继承、多态完整笔记 一、封装1. 程序存在的问题数据无法保证安全性同时无法保证数据有效性。2. 封装访问修饰private私有的被 private 修饰的内容仅能在本类内部访问public公开的任意位置都可以访问3. 为私有属性提供 get /set 方法set 方法给属性赋值// set方法属性名首字母大写 public void set属性名(数据类型 变量名){ this.属性名 变量名; }注意形参的数据类型要和被赋值的属性类型保持一致可以在 set 方法内部做数据合法性校验。get 方法获取属性的值// get方法属性名首字母大写 public 数据类型 get属性名(){ return this.属性名; // this 可以省略 }返回值类型和被访问的属性数据类型保持一致。4. 封装小结属性私有化使用private修饰成员属性对外提供公开的 get/set 方法完成赋值与取值常在 set 方法中增加业务逻辑校验传入数据是否合法二、继承继承体现类与类之间is‑a的关系。 例水杯是一种容器狗是一种动物手机是一种电子产品。1. 继承概念子类extends父类语法class 子类 extends 父类{ }子类可以直接复用父类中非私有属性与方法继承是客观存在的 is‑a 关系不要强行使用继承2. 继承好处提高代码复用性提升代码扩展性。3. 方法重写 override子类定义和父类签名完全一致的方法。重写要求方法名、形参列表、返回值类型和父类保持一致子类访问修饰符与父类相同或者访问权限更宽泛使用规则使用子类对象调用方法如果子类重写了父类方法优先执行子类重写后的方法。⚠️注意方法名、参数列表相同返回值不同编译报错不构成重写方法名相同参数列表不同属于方法重载 overload不是重写使用场景父类原有方法逻辑无法满足子类业务需求子类对方法进行重新实现。面试题overload 和 override 的区别Overload方法重载方法名相同形参列表不同个数、顺序、类型和返回值、访问修饰符、异常无关。Override方法重写子类方法名、参数列表、返回值和父类完全一致子类访问权限不能比父类更严格。4. 父类与子类设计思路父类抽取多个子类的共性属性和行为父类偏向通用抽象子类偏向具体特殊。开发中抽取多个类的公共逻辑作为父类。5. Java 继承特点Java 为单继承一个类只能有一个直接父类支持多级间接继承。一个父类可以拥有多个子类。6. 子类可以继承父类哪些内容面试重点构造方法不能被继承构造方法名必须和本类类名一致子类和父类类名不同子类会新增自己独有的属性父类构造方法无法适配子类。属性、普通成员方法能否继承取决于访问修饰符表格修饰符本类同包不同包子类不同包无关类public✅✅✅✅protected✅✅✅❌default (默认不写)✅✅❌❌private✅❌❌❌总结private不能继承default同包子类可以继承protected同包、不同包子类均可继承public所有子类均可继承补充属性、成员方法、构造器可以使用 4 种访问修饰符类只能使用 public 和 default。7. super 关键字开发重点① super. 访问父类成员super.属性名访问父类的成员属性super.方法名(实参)调用父类的成员方法使用位置子类普通成员方法、子类构造方法内。② super () /super (实参)写在子类构造方法第一行有效语句用来调用父类构造方法。如果子类构造方法没有手动写super()JVM 会默认补无参super()。super()和this()不能同时出现在同一个构造方法第一行。如果构造第一行写this()JVM 不会自动补super()会顺着 this 指向的构造方法去找 super。8. 继承关系下对象创建过程难点new 子类对象时JVM 会同时创建配套父类对象该父类对象仅供子类内部使用。执行流程new 分配内存空间子类 父类所有属性赋默认初始值进入子类构造方法第一行执行super()/super(实参)执行父类属性初始化执行父类构造方法剩余代码super 执行完毕回到子类构造执行子类属性初始化执行子类构造剩余业务代码编译器会把属性初始化代码移动到对应构造方法中放在 super 之后构造其余代码之前。三、多态1. 概念父类类型引用指向子类对象父类类型 引用名 new 子类类型();编译看左边编译阶段只能调用父类中声明的属性和方法父类没有则编译报错。运行看右边运行时如果子类重写了父类方法优先执行子类重写方法没有重写执行父类原始方法。2. 引用类型转换1向上转型自动多态子类引用赋值给父类引用小类型 → 大类型直接赋值就是多态写法Animal a new Dog();2向下转型强制类型转换父类引用赋值给子类引用大类型 → 小类型必须强转子类类名 引用变量 (子类类名)父类引用;示例Animal a new Dog(); Dog d (Dog) a;注意如果实际对象类型和强转目标类型一致编译运行全部正常。如果实际对象和目标类型不一致编译通过运行抛出ClassCastException类型转换异常。两个类没有继承关系不能强转直接编译报错。3. instanceof 关键字引用变量 instanceof 类名作用判断引用指向的实际对象是否属于该类或其子类返回 true/false。开发场景向下强转之前先用 instanceof 做判断规避ClassCastException类型转换异常。4. 多态的三种应用场景数组数组声明为父类类型数组中可以存放本类以及所有子类对象Animal[] as new Animal[3]; as[0] new Dog(); as[1] new Cat(); as[2] new Dog();方法形参形参写父类类型可以接收本类以及全部子类对象。方法返回值返回值写父类类型可以返回本类或者任意子类对象。5. 多态好处统一管理多个子类对象面向父类编程降低代码耦合。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻