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/16 7:04:48

用CosyVoice2-0.5B做AI配音:跨语种合成与方言控制实操分享

用CosyVoice2-0.5B做AI配音&#xff1a;跨语种合成与方言控制实操分享 你有没有遇到过这些场景&#xff1f; 给一段英文产品介绍视频配中文解说&#xff0c;却找不到声线匹配的配音员&#xff1b; 想为家乡文旅宣传片配上地道的四川话旁白&#xff0c;又苦于没有本地配音资源&…

作者头像 李华
网站建设 2026/4/16 7:06:28

Qwen3-4B-Instruct-2507参数调优:提升指令遵循精度教程

Qwen3-4B-Instruct-2507参数调优&#xff1a;提升指令遵循精度教程 1. 为什么需要调优&#xff1f;从“能回答”到“答得准” 你有没有遇到过这样的情况&#xff1a;模型明明能生成一大段文字&#xff0c;但仔细一看——跑题了、漏条件、把“不要加水印”理解成“加水印”&am…

作者头像 李华
网站建设 2026/4/16 7:08:13

数据服务与联邦学习:隐私保护数据共享

数据服务与联邦学习&#xff1a;隐私保护数据共享 关键词&#xff1a;联邦学习、隐私保护、数据共享、数据服务、差分隐私、安全多方计算、同态加密、隐私计算 摘要&#xff1a;在数据驱动的数字时代&#xff0c;数据共享面临隐私泄露与合规风险的双重挑战。联邦学习作为隐私保…

作者头像 李华
网站建设 2026/4/16 7:01:58

vivado2025新手教程:从安装到工程建立完整指南

以下是对您提供的博文内容进行 深度润色与结构重构后的技术博客正文 。我已严格遵循您的全部要求: ✅ 彻底去除AI痕迹,语言自然、专业、有“人味”; ✅ 删除所有模板化标题(如“引言”“总结”等),代之以逻辑连贯、层层递进的有机叙述; ✅ 所有技术点均融入真实开发…

作者头像 李华
网站建设 2026/4/15 22:16:45

Glyph与Claude长上下文对比:处理效率实测分析

Glyph与Claude长上下文对比&#xff1a;处理效率实测分析 1. 为什么长上下文处理成了新瓶颈&#xff1f; 你有没有遇到过这样的情况&#xff1a;想让AI读完一份30页的产品需求文档&#xff0c;再总结关键点&#xff0c;结果模型直接报错“超出上下文长度”&#xff1f;或者把…

作者头像 李华
网站建设 2026/4/12 12:05:54

小白也能懂的语音识别:用Paraformer镜像从0开始做转录

小白也能懂的语音识别&#xff1a;用Paraformer镜像从0开始做转录 你有没有过这样的经历&#xff1a;会议录音堆了一大堆&#xff0c;却没时间逐条听写&#xff1f;采访素材录了几十分钟&#xff0c;光整理文字就花掉半天&#xff1f;或者想把老视频里的对话快速变成字幕&…

作者头像 李华