找回密码
 立即注册
首页 业界区 业界 面向对象三大特点(封装、继承、多态)

面向对象三大特点(封装、继承、多态)

甄婉丽 前天 19:20
面向对象编程有三大特性:封装、继承、多态。
封装


  • 封装是指将对象的属性(数据,如变量)和行为(操作数据的方法,如函数)捆绑在一起,同时隐藏对象内部的实现细节。
  • 核心目的


  • 提高代码安全性:防止外部程序随意篡改对象的内部属性,避免无效数据的产生。
  • 提升代码可维护性:内部实现细节的修改不会影响外部调用者,降低代码耦合度。
  • 增强代码复用性:封装后的类可以作为独立模块被多次引用。

  • 具体实现:


  • 使用 private 修饰成员变量
  • 提供 public的getter/setter方法
  1. public class User {
  2.     private String name;
  3.     public String getName() {
  4.         return name;
  5.     }
  6.     public void setName(String name) {
  7.         this.name = name;
  8.     }
  9. }
复制代码
继承


  • 继承:子类(派生类)继承父类(基类/超类)的属性和方法,实现代码复用,并建立 is-a 关系。子类无需重新编写父类的已有代码,同时还能根据需求扩展自身的独有属性和方法,甚至重写父类的方法。
  • 核心目的


  • 最大化代码复用:减少冗余代码,提高开发效率。
  • 建立类的层次关系:清晰梳理类与类之间的逻辑关联(如“学生”是“人”的一种)。
  • 为多态提供基础支撑。

  • 具体实现
  1. class Animal {
  2.     void eat() {}
  3. }
  4. class Dog extends Animal {
  5.     void bark() {}
  6. }
复制代码

  • 注意事项:


  • Java只支持单继承,Python支持多继承。
  • 可以多层继承
  • 可以实现多个接口
多态


  • 多态:同一个方法调用,在不同对象上表现出不同的行为。
  • 多态前提(java中)


  • 有继承或接口关系
  • 方法重写
  • 父类引用指向子类对象

  • 目的:


  • 提高代码灵活性,降低代码耦合度
  • 增强代码可扩展性,完美契合 “开闭原则”
  • 简化代码结构,提高代码可维护性

  • 代码示例:
  1. // 1. 存在继承关系(父类Person)
  2. class Person {
  3.     // 父类方法(非private、非static、非final,可被重写)
  4.     public void work() {
  5.         System.out.println("普通人的工作");
  6.     }
  7. }
  8. // 子类Student,继承Person
  9. class Student extends Person {
  10.     // 2. 方法重写(严格遵循方法签名一致)
  11.     @Override
  12.     public void work() {
  13.         System.out.println("学生的工作:上课学习");
  14.     }
  15. }
  16. // 子类Teacher,继承Person
  17. class Teacher extends Person {
  18.     // 2. 方法重写
  19.     @Override
  20.     public void work() {
  21.         System.out.println("老师的工作:备课授课");
  22.     }
  23. }
  24. public class PolymorphismTest {
  25.     public static void main(String[] args) {
  26.         // 3. 父类引用指向子类对象(核心条件)
  27.         Person p1 = new Student();
  28.         Person p2 = new Teacher();
  29.         
  30.         // 触发多态:调用同一方法,呈现不同行为
  31.         p1.work(); // 输出:学生的工作:上课学习
  32.         p2.work(); // 输出:老师的工作:备课授课
  33.     }
  34. }
复制代码

  • java与python多态前提条件的区别
二者的差异根源是 Java 为静态强类型语言(约束严格),Python 为动态弱类型语言(约束宽松,灵活度更高),具体前提条件对比如下:
对比维度Java 多态(必背,缺一不可)Python 多态(无强制约束,灵活宽松)继承/接口依赖必须具备类继承关系或接口实现关系,无此关系无法实现多态无需强制依赖!① 支持继承(单 / 多继承)实现多态(与 Java 类似);② 核心支持鸭子类型:无任何继承 / 接口,只要对象拥有目标方法即可实现多态方法重写要求严格遵循规则:方法名、参数列表、返回值必须一致;父类方法不能是private/static/final;推荐显式标注@Override无严格规则,仅需子类与父类方法同名即可视为 “重写”;可灵活修改参数 / 返回值;无强制@Override标注对象引用绑定必须满足父类/接口引用指向子类/实现类对象(静态类型声明为父类,实际指向子类实例),这是触发多态的关键完全不需要!Python变量无固定类型声明,无需刻意绑定父类引用,直接使用子类实例或符合方法要求的对象即可触发多态
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册