当前位置: 首页 > news >正文

无锡做网站价格手机网站排名怎么做

无锡做网站价格,手机网站排名怎么做,网站建设毕业设计选题,网站架构分析怎么写目录 一、封装(Encapsulation):数据安全的 “保护盾” 【1】为什么需要封装? 【2】封装的实现步骤 【3】代码 【4】封装的核心价值 二、继承(Inheritance):代码复用的 “快捷键” 【1】为…

目录

一、封装(Encapsulation):数据安全的 “保护盾”

【1】为什么需要封装?

【2】封装的实现步骤

【3】代码

【4】封装的核心价值

二、继承(Inheritance):代码复用的 “快捷键”

【1】为什么需要继承?

【2】继承的实现规则

【3】代码

【4】继承的核心价值

三、多态(Polymorphism):灵活扩展的 “魔术手”

【1】为什么需要多态?

【2】多态的实现条件

【3】代码

【4】多态的核心价值

四、三大思想的关联:从 “安全” 到 “复用” 再到 “灵活”


一、封装(Encapsulation):数据安全的 “保护盾”

        封装的核心是 “隐藏细节,暴露接口”,就像给对象穿上 “保护壳”—— 将内部的属性和复杂逻辑隐藏起来,只通过预先定义的公共方法与外部交互,避免外部直接操作导致数据混乱。

【1】为什么需要封装?

        举个简单例子:如果一个User类的age属性直接用public修饰,外部代码可以随意赋值 user.age = -20,这显然不符合 “年龄为正” 的业务逻辑。而封装能从根源上避免这种问题。

【2】封装的实现步骤

1.私有化属性:用private修饰类的成员变量,禁止外部直接访问

2.提供公共接口:定义get、set方法,在方法中加入逻辑校验

3.隐藏内部方法:仅将对外必要的方法用public修饰,内部辅助方法用private隐藏

【3】代码

public class User {// 1. 私有化属性,外部无法直接访问private String name;private int age;// 2. 提供公共getter/setter,加入逻辑校验public String getName() {return name;}public void setName(String name) {// 校验:姓名不能为空if (name == null || name.trim().isEmpty()) {throw new IllegalArgumentException("姓名不能为空");}this.name = name;}public int getAge() {return age;}public void setAge(int age) {// 校验:年龄需在0-150之间if (age < 0 || age > 150) {throw new IllegalArgumentException("年龄必须在0-150之间");}this.age = age;}// 3. 内部辅助方法,外部不可见private void logUserInfo() {System.out.println("用户:" + name + ",年龄:" + age);}
}

【4】封装的核心价值

1.数据安全:通过校验逻辑确保属性值符合业务规则;

2.低耦合:外部只需关注 “怎么用”,无需关心 “内部怎么实现”,后续修改内部逻辑不影响外部调用;

3.代码可维护:属性的操作统一收口到 get/set方法,便于统一管理。


二、继承(Inheritance):代码复用的 “快捷键”

        继承是指一个类(子类 / 派生类)可以继承另一个类(父类 / 基类)的属性和方法,同时可以新增自己的属性或重写父类的方法。它的核心是 “复用已有代码,减少重复开发”。

【1】为什么需要继承?

        假设我们需要定义 Student和 Teacher两个类,它们都有 name、age属性和 showInfo() 方法 —— 如果分别写两个类,会出现大量重复代码。而通过继承,我们可以先定义一个公共父类 Person,再让 Student和 Teacher继承 Person,直接复用父类的代码。

【2】继承的实现规则

  • 用 extends 关键字表示继承,格式:子类 extends 父类
  • Java 只支持单继承(一个子类只能有一个直接父类),避免多继承的逻辑冲突;
  • 父类的private成员(属性 / 方法)子类无法直接访问,但可以通过父类的public方法间接访问;
  • 父类的 protected成员允许子类访问(即使不在同一个包),public成员允许所有类访问。

【3】代码

// 父类:公共的Person类
public class Person {protected String name; // 子类可访问protected int age;// 父类的构造方法public Person(String name, int age) {this.name = name;this.age = age;}// 父类的方法public void showInfo() {System.out.println("姓名:" + name + ",年龄:" + age);}
}// 子类:Student继承自Person
public class Student extends Person {// 子类新增的属性private String studentId;// 子类的构造方法:必须先通过super()调用父类构造public Student(String name, int age, String studentId) {super(name, age); // 调用父类的构造方法,初始化name和agethis.studentId = studentId;}// 子类新增的方法public void study() {System.out.println(studentId + "号学生" + name + "正在学习");}// (可选)重写父类的showInfo方法,扩展功能@Overridepublic void showInfo() {super.showInfo(); // 调用父类的showInfo,复用已有逻辑System.out.println("学号:" + studentId);}
}

【4】继承的核心价值

  • 代码复用:父类的通用属性和方法无需在子类中重复编写;
  • 体系化设计:通过继承构建类的层级关系(如 Person→ Student/Teacher),让代码结构更清晰;
  • 便于扩展:子类可以在父类基础上新增功能,不影响父类的原有逻辑。

三、多态(Polymorphism):灵活扩展的 “魔术手”

        多态是指 “同一行为,不同表现”—— 子类对象可以赋值给父类引用,调用方法时会根据对象的实际类型执行对应的子类实现,而不是父类的实现。它是 Java 实现 “开闭原则”(对扩展开放,对修改关闭)的关键。

【1】为什么需要多态?

        假设我们需要开发一个 “课程管理系统”,有 MathCourse(数学)、EnglishCourse(英语)两种课程,都需要实现 “上课” 功能。如果不用多态,每次新增课程(如 ChineseCourse)都要修改调用逻辑;而用多态,新增课程时无需修改原有代码,直接扩展即可。

【2】多态的实现条件

1.存在继承关系:子类继承父类(或实现接口);

2.子类重写父类方法:子类对父类的方法进行自定义实现;

3.父类引用指向子类对象:通过父类类型的变量调用子类的方法。

【3】代码

// 父类(接口也可,此处用抽象类更直观)
public abstract class Course {// 抽象方法:子类必须重写public abstract void startClass();
}// 子类1:数学课程
public class MathCourse extends Course {@Overridepublic void startClass() {System.out.println("数学课:开始讲解微积分");}
}// 子类2:英语课程
public class EnglishCourse extends Course {@Overridepublic void startClass() {System.out.println("英语课:开始练习口语对话");}
}// 测试类:多态的核心体现
public class CourseTest {public static void main(String[] args) {// 父类引用指向子类对象(关键)Course math = new MathCourse();Course english = new EnglishCourse();// 同一调用方式,不同表现startCourse(math);    // 输出:数学课:开始讲解微积分startCourse(english); // 输出:英语课:开始练习口语对话// 新增课程(如语文课):无需修改startCourse方法Course chinese = new ChineseCourse();startCourse(chinese); // 直接扩展,符合开闭原则}// 通用方法:只依赖父类,不关心具体子类public static void startCourse(Course course) {course.startClass(); // 调用的是子类的实现}
}// 新增子类:语文课(无需修改原有代码)
class ChineseCourse extends Course {@Overridepublic void startClass() {System.out.println("语文课:开始分析古文");}
}

【4】多态的核心价值

  • 代码灵活:调用方只需面向父类编程,无需关心具体子类,降低代码耦合;

  • 易于扩展:新增子类时,原有调用逻辑无需修改,符合 “开闭原则”;

  • 简化逻辑:避免大量 if-else 判断(如不用多态需判断 “是数学 / 英语 / 语文课” 再执行对应逻辑)。


四、三大思想的关联:从 “安全” 到 “复用” 再到 “灵活”

封装、继承、多态并非孤立存在,而是相互支撑、层层递进的关系:

1.封装是基础:先通过封装保证数据安全和细节隐藏,才能让后续的继承和多态有可靠的 “基础组件”;

2.继承是桥梁:通过继承复用封装好的父类代码,同时为多态提供 “父类 - 子类” 的层级关系;

3.多态是目标:在封装和继承的基础上,通过多态实现代码的灵活扩展,最终达到 “高内聚、低耦合” 的设计目标。


        感谢你花时间读到这里~ 如果你觉得这篇内容对你有帮助,不妨点个赞让更多人看到;如果有任何想法、疑问,或者想分享你的相关经历,欢迎在评论区留言交流,你的每一条互动对我来说都很珍贵~ 我们下次再见啦!😊😊

http://www.dtcms.com/a/426863.html

相关文章:

  • 大模型价格战背后的技术革命:剖析DeepSeek-V3.2的DSA稀疏注意力
  • 用 AI 驱动 Unity 开发:Unity3d MCP
  • 微信小程序学习(四)
  • VIM和Linux命令速查表
  • TDengine 时序函数 STATECOUNT 用户手册
  • GitHub Spec Kit:官方规格驱动开发工具包深度解析
  • 商标图片大全 设计图网站过度优化的表现
  • 精读C++20设计模式——行动型设计模式:责任链
  • transformers音频实战01-音频概念
  • 方寸网站建设如何建立免费个人网站
  • Spring Boot 实战 Redis 分布式锁:从原理到高并发落地
  • nodejs做网站的弊端马来西亚网站后缀
  • CSDN Markdown 编辑器快捷键大全
  • 基于GNS3 web UI配置RIP协议(Wireshark 分析)
  • Helm Chart 中,SeaweedFS的 master.data.type 选择
  • 智能座舱问答
  • kube-prometheus监控服务发现
  • 攻防世界-Web-Web_python_template_injection
  • seo站内优化公司河北邯郸seo网站建设网站优化
  • wordpress网站插件优秀校园网站
  • Hibernate批量查询方法全面解析
  • 深度解析 ChatGPT 和 Claude 的记忆机制
  • 994. 腐烂的橘子,207. 课程表, 208.实现 Trie (前缀树)
  • 有趣的化学元素
  • 深圳网站建设者西安广告公司
  • READ_ONCE、smp_store_release在io_uring中实例分析
  • C/C++数据结构之用数组实现栈
  • Linux timekeeping
  • macOS 下安装 zsh、zsh-syntax-highlighting、powerlevel9k、nerd-font
  • CarveMe:代谢模型构建