news 2026/4/15 21:08:12

面向对象的三大特性是什么?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面向对象的三大特性是什么?

一、封装(Encapsulation)

核心定义

封装是把对象的属性(数据)行为(方法)绑定在一起,并隐藏对象内部的实现细节,只对外暴露有限的访问接口。核心目的是数据安全代码解耦

实现方式
  • 使用private修饰属性,禁止外部直接访问;
  • 提供publicgetter/setter方法来访问和修改属性,可在方法中增加校验逻辑;
  • 把相关的属性和方法封装在一个类中。
代码示例

java

运行

public class User { // 私有属性,外部无法直接访问(封装核心) private String name; private int age; // 提供getter方法,对外暴露读取属性的接口 public String getName() { return name; } // 提供setter方法,对外暴露修改属性的接口,并增加校验逻辑 public void setAge(int age) { // 封装的优势:可以控制数据的合法性 if (age < 0 || age > 150) { throw new IllegalArgumentException("年龄必须在0-150之间"); } this.age = age; } public int getAge() { return age; } // 封装行为:把相关操作封装为方法 public void showInfo() { System.out.println("姓名:" + name + ",年龄:" + age); } } // 测试类 public class EncapsulationTest { public static void main(String[] args) { User user = new User(); // user.age = -10; // 直接访问私有属性,编译报错(封装保护) user.setAge(25); // 通过setter方法合法修改 System.out.println(user.getAge()); // 输出 25 // 非法值会被校验拦截 user.setAge(200); // 抛出 IllegalArgumentException } }

二、继承(Inheritance)

核心定义

继承允许子类(Subclass)复用父类(Superclass)的属性和方法,同时子类可以扩展自己的特有功能。核心目的是代码复用建立类之间的层级关系

关键规则
  • Java 中只支持单继承(一个子类只能有一个直接父类),但可以多层继承;
  • 子类通过extends关键字继承父类;
  • 父类的private成员子类无法直接访问,但可通过public/protected方法间接访问;
  • 子类可通过super关键字调用父类的构造方法、属性和方法。
代码示例

java

运行

// 父类:提取通用属性和方法 public class Animal { protected String name; // protected:子类可访问 public Animal(String name) { this.name = name; } // 通用方法 public void eat() { System.out.println(name + "在吃东西"); } } // 子类:继承父类,复用代码并扩展 public class Dog extends Animal { // 子类特有属性 private String breed; // 子类构造方法,必须先调用父类构造方法 public Dog(String name, String breed) { super(name); // 调用父类构造方法 this.breed = breed; } // 子类特有方法(扩展功能) public void bark() { System.out.println(name + "(" + breed + ")在汪汪叫"); } } // 测试类 public class InheritanceTest { public static void main(String[] args) { Dog dog = new Dog("旺财", "哈士奇"); dog.eat(); // 复用父类方法,输出:旺财在吃东西 dog.bark(); // 子类特有方法,输出:旺财(哈士奇)在汪汪叫 } }

三、多态(Polymorphism)

核心定义

多态是指同一个行为(方法)在不同对象上表现出不同的形态。核心目的是解耦提高代码扩展性,也是面向对象最灵活的特性。

实现条件
  1. 存在继承 / 实现关系;
  2. 子类重写(Override)父类的方法;
  3. 父类引用指向子类对象(向上转型)。
代码示例

java

运行

// 父类 public abstract class Shape { // 抽象方法,由子类实现(不同形态) public abstract void draw(); } // 子类1:圆形 public class Circle extends Shape { @Override public void draw() { System.out.println("绘制圆形"); } } // 子类2:矩形 public class Rectangle extends Shape { @Override public void draw() { System.out.println("绘制矩形"); } } // 测试类:体现多态的核心价值 public class PolymorphismTest { // 统一的方法,接收父类类型,适配所有子类 public static void drawShape(Shape shape) { shape.draw(); // 运行时调用子类的实现(动态绑定) } public static void main(String[] args) { // 父类引用指向子类对象 Shape circle = new Circle(); Shape rectangle = new Rectangle(); // 同一个drawShape方法,表现出不同行为 drawShape(circle); // 输出:绘制圆形 drawShape(rectangle); // 输出:绘制矩形 // 扩展新子类(三角形),无需修改drawShape方法 Shape triangle = new Triangle(); drawShape(triangle); // 输出:绘制三角形 } } // 新增子类:三角形(扩展能力) class Triangle extends Shape { @Override public void draw() { System.out.println("绘制三角形"); } }

总结

  1. 封装:隐藏内部细节,通过接口访问,核心是数据安全(如private属性 +getter/setter);
  2. 继承:复用父类代码,子类可扩展,核心是代码复用extends关键字);
  3. 多态:父类引用指向子类对象,方法调用动态绑定,核心是代码扩展(重写 + 向上转型)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 5:32:29

图解Keil5中文乱码修复过程:新手友好型教程

以下是对您提供的博文《图解Keil5中文乱码修复过程:新手友好型技术分析》的 深度润色与专业重构版本 。我以一位常年带嵌入式实训课、写过几十万行Keil工程代码、也踩过所有编码坑的工程师视角,彻底重写了全文—— 去掉所有AI腔、模板感和教科书式结构,代之以真实开发现场…

作者头像 李华
网站建设 2026/4/10 21:56:35

Qwen All-in-One知识更新:外部检索增强部署构想

Qwen All-in-One知识更新&#xff1a;外部检索增强部署构想 1. 什么是Qwen All-in-One&#xff1f;一个模型&#xff0c;两种身份 你有没有试过同时打开三个AI工具——一个查资料、一个写文案、一个分析情绪&#xff1f;每次切换都像在不同房间之间来回跑。而Qwen All-in-One…

作者头像 李华
网站建设 2026/4/12 23:03:09

Ubuntu开机自启脚本三种方案对比,测试脚本实测验证

Ubuntu开机自启脚本三种方案对比&#xff0c;测试脚本实测验证 在实际运维和开发工作中&#xff0c;经常需要让某些脚本或服务在Ubuntu系统启动时自动运行。比如定时数据采集、后台监控程序、环境初始化任务等。但不同方案的执行时机、权限范围、稳定性表现差异很大——选错方…

作者头像 李华
网站建设 2026/4/10 13:14:07

亲测Speech Seaco Paraformer镜像:中文语音识别效果惊艳,支持热词定制

亲测Speech Seaco Paraformer镜像&#xff1a;中文语音识别效果惊艳&#xff0c;支持热词定制 你有没有过这样的经历——会议录音转文字后错字连篇&#xff0c;专业术语全被识别成谐音&#xff1b;访谈音频里“Transformer”变成“传导器”&#xff0c;“科哥”变成“哥哥”&a…

作者头像 李华
网站建设 2026/4/13 18:10:38

新手教程:电子电路基础中的电阻与欧姆定律实战

以下是对您提供的博文内容进行 深度润色与结构重构后的技术文章 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI痕迹,强化“人类工程师第一视角”的真实感与教学温度; ✅ 摒弃所有模板化标题(如“引言”“总结”),以逻辑流自然推进; ✅ 将理论、测量、代码、误区、…

作者头像 李华
网站建设 2026/3/31 18:40:55

保姆级YOLO11部署教程,Jupyter和SSH双方式详解

保姆级YOLO11部署教程&#xff0c;Jupyter和SSH双方式详解 1. 为什么选YOLO11&#xff1f;一句话说清它的价值 你可能已经用过YOLOv5、YOLOv8&#xff0c;甚至试过YOLOv10——但YOLO11不是简单迭代&#xff0c;而是Ultralytics团队在2024年推出的全新架构升级版本。它不是“v…

作者头像 李华