网站设计心的品牌宣传型企业网站

张小明 2026/1/3 2:02:11
网站设计心的,品牌宣传型企业网站,wordpress如何添加注册登录界面,公司网站后台登陆导语#xff1a;继承与抽象类是Java面向对象编程的基石#xff0c;掌握它们能让你设计出更优雅、可扩展的代码结构。本文将从基础概念到实战案例#xff0c;带你深入理解这两个核心特性。一、继承#xff1a;代码复用的艺术1.1 什么是继承#xff1f;继承描述的是事物之间…导语继承与抽象类是Java面向对象编程的基石掌握它们能让你设计出更优雅、可扩展的代码结构。本文将从基础概念到实战案例带你深入理解这两个核心特性。一、继承代码复用的艺术1.1 什么是继承继承描述的是事物之间的所属关系通过继承可以形成清晰的体系结构。就像现实中子女继承父辈财产一样在Java中子类会自动拥有父类所有可继承的属性和方法。员工体系示例复制员工 (Employee) ├── 研发部员工 (Developer) │ ├── JavaEE工程师 │ └── Android工程师 └── 维护部员工 (Maintainer) ├── 网络维护工程师 └── 硬件维护工程师1.2 继承的基本语法使用extends关键字实现继承javaclass 子类 extends 父类 {}基础示例java// 父类员工类 class Employee { String name; // 定义name属性 // 定义员工的工作方法 public void work() { System.out.println(尽心尽力地工作); } } // 子类研发部员工类 class Developer extends Employee { // 定义一个打印name的方法 public void printName() { System.out.println(name name); // 直接继承父类属性 } } // 测试类 public class Example01 { public static void main(String[] args) { Developer d new Developer(); // 创建子类对象 d.name 小明; // 使用继承的属性 d.printName(); // 调用子类方法 d.work(); // 调用继承的父类方法 } }运行结果name小明 尽心尽力地工作1.3 继承的好处与注意事项✅ 继承的好处提高代码复用性子类自动拥有父类成员避免重复代码提高可维护性修改父类即可影响所有子类为多态提供前提继承是 polymorphism 的基础⚠️ 核心注意事项规则说明示例单继承限制Java只支持单继承一个类只能有一个直接父类class C extends A,B{}❌多重继承支持多层继承继承链class A{} → class B extends A{} → class C extends B{}✅相对概念一个类可以是父类也可以是子类B是A的子类同时是C的父类私有成员父类private成员子类无法直接访问需要通过public/getter方法访问1.4 子父类成员变量关系情况一不同名变量javaclass Fu { int num 5; } class Zi extends Fu { int num2 6; public void show() { System.out.println(Fu num num); // 直接访问父类变量 System.out.println(Zi num2 num2); // 访问子类变量 } }情况二同名变量使用super关键字当子父类出现同名变量时使用super访问父类成员javaclass Fu { int num 5; } class Zi extends Fu { int num 6; // 与父类同名 void show() { // 子类中需要访问父类同名变量时使用super关键字 System.out.println(Fu num super.num); // 访问父类 System.out.println(Zi num this.num); // 访问子类 } }super关键字总结super.成员变量访问父类成员变量super.成员方法()调用父类成员方法super()调用父类构造方法后续讲解1.5 方法重写Override详解什么是方法重写当子类出现与父类一模一样的方法时方法名、参数列表、返回类型都相同会发生覆盖操作也称为重写。基本示例javaclass Fu { public void show() { System.out.println(Fu show); } } class Zi extends Fu { // 子类复写了父类的show方法 Override // 注解推荐加上 public void show() { System.out.println(Zi show); } }方法重写的应用智能手机案例当子类需要父类功能但又有特有内容时java// 手机类父类 class Phone { public void sendMessage() { System.out.println(发短信); } public void call() { System.out.println(打电话); } public void showNum() { System.out.println(来电显示号码); } } // 智能手机类子类 class NewPhone extends Phone { // 覆盖父类的来电显示功能增加姓名和头像显示 Override public void showNum() { super.showNum(); // 调用父类已存在的功能 // 增加自己特有功能 System.out.println(显示来电姓名); System.out.println(显示头像); } }方法重写注意事项权限要求子类方法权限必须≥父类方法权限javaclass Fu { public void method() {} } class Zi extends Fu { // 编译错误权限降低 // void method() {} ❌ // 正确权限相等或更高 public void method() {} ✅ }签名一致方法名、参数列表、返回类型必须完全相同私有方法父类private方法子类无法重写看不到二、抽象类定义规范的利器2.1 为什么需要抽象类当父类知道子类应该包含什么方法但无法确定具体实现时就需要抽象类。典型场景图形类都有求周长的方法但不同图形圆、矩形的计算方式完全不同。javaabstract class Shape { public abstract double getPerimeter(); // 抽象方法 }2.2 抽象类与抽象方法定义抽象方法只有声明没有方法体javapublic abstract 返回值类型 方法名(参数);抽象类包含抽象方法的类必须用abstract修饰javaabstract class 类名 { // 可以有抽象方法 public abstract void method(); // 也可以有具体方法 public void normalMethod() { // 具体实现 } }2.3 员工体系中的抽象类应用java// 研发部员工抽象类 abstract class Developer { public abstract void work(); // 抽象方法 } // JavaEE工程师具体实现 class JavaEE extends Developer { Override public void work() { System.out.println(正在研发淘宝网站); } } // Android工程师具体实现 class Android extends Developer { Override public void work() { System.out.println(正在研发淘宝手机客户端软件); } }2.4 抽象类的特点与细节✨ 核心特点必须被abstract修饰抽象类和抽象方法都需要abstract不能直接实例化new 抽象类()编译错误子类必须实现所有抽象方法否则子类也必须是抽象类可以有具体方法抽象类中可以包含非抽象方法 细节问题表格复制问题答案说明抽象类一定是父类吗✅ 是的因为不断抽取而来抽象类可以没有抽象方法吗✅ 可以意义是不让外界创建该类对象仅作为工具类供子类使用abstract能和哪些关键字冲突❌ private❌ final❌ staticprivate子类无法访问final禁止重写static类方法无法被覆盖三、综合案例员工管理体系3.1 需求分析某IT公司有多名员工按工作分为研发部和维护部研发部JavaEE工程师、Android工程师维护部网络维护工程师、硬件维护工程师所有员工都有员工编号、姓名并执行各自的工作内容。工作描述JavaEE工程师员工号为xxx的xxx员工正在研发淘宝网站Android工程师员工号为xxx的xxx员工正在研发淘宝手机客户端软件网络维护工程师员工号为xxx的xxx员工正在检查网络是否畅通硬件维护工程师员工号为xxx的xxx员工正在修复打印机3.2 类结构设计员工 Employee抽象类 ├── 研发部员工 Developer抽象类 │ ├── JavaEE │ └── Android └── 维护部员工 Maintainer抽象类 ├── Network └── Hardware3.3 完整代码实现java// 1. 定义员工抽象类 public abstract class Employee { private String id; // 员工编号 private String name; // 员工姓名 public String getId() { return id; } public void setId(String id) { this.id id; } public String getName() { return name; } public void setName(String name) { this.name name; } // 工作方法抽象方法 public abstract void work(); } // 2. 定义研发部员工抽象类 public abstract class Developer extends Employee { // 研发部共性可以在这里扩展 } // 3. 定义维护部员工抽象类 public abstract class Maintainer extends Employee { // 维护部共性可以在这里扩展 } // 4. JavaEE工程师 public class JavaEE extends Developer { Override public void work() { System.out.println(员工号为 getId() 的 getName() 员工正在研发淘宝网站); } } // 5. Android工程师 public class Android extends Developer { Override public void work() { System.out.println(员工号为 getId() 的 getName() 员工正在研发淘宝手机客户端软件); } } // 6. 网络维护工程师 public class Network extends Maintainer { Override public void work() { System.out.println(员工号为 getId() 的 getName() 员工正在检查网络是否畅通); } } // 7. 硬件维护工程师 public class Hardware extends Maintainer { Override public void work() { System.out.println(员工号为 getId() 的 getName() 员工正在修复打印机); } }3.4 测试与运行javapublic class Test { public static void main(String[] args) { // 创建JavaEE工程师对象 JavaEE ee new JavaEE(); ee.setId(000015); ee.setName(小明); ee.work(); // 调用工作方法 // 创建Android工程师对象 Android android new Android(); android.setId(000016); android.setName(小红); android.work(); // 创建网络维护工程师对象 Network network new Network(); network.setId(000017); network.setName(小刚); network.work(); } }运行结果员工号为 000015 的 小明 员工正在研发淘宝网站 员工号为 000016 的 小红 员工正在研发淘宝手机客户端软件 员工号为 000017 的 小刚 员工正在检查网络是否畅通四、知识点总结4.1 继承核心要点概念子类继承父类自动拥有父类可继承成员关键字extends单继承Java只支持单继承但支持多层继承Object类所有类的终极父类super关键字访问父类成员javasuper.成员变量; // 访问父类变量 super.成员方法(); // 调用父类方法4.2 方法重写 vs 方法重载表格复制特性方法重写Override方法重载Overload位置子父类之间同一个类中方法名必须相同必须相同参数列表必须相同必须不同返回类型必须相同可相同可不同权限修饰符子类≥父类无要求4.3 抽象类核心要点抽象方法只有声明没有方法体用abstract修饰抽象类包含抽象方法的类必须用abstract修饰不能实例化new 抽象类()会编译错误子类要求必须实现所有抽象方法否则子类也必须是抽象类设计意义定义规范强制子类实现特定功能五、面试要点与最佳实践 高频面试题Q1: 抽象类中是否可以没有抽象方法有意义吗答可以。意义在于防止该类被实例化让其仅作为父类使用。这是一种设计意图的体现。Q2: abstract为什么不能和private共存答abstract要求子类必须实现该方法而private子类无法继承。两者矛盾。Q3: 继承的弊端是什么答增加了类之间的耦合度。父类修改会影响所有子类不符合高内聚低耦合原则。 最佳实践建议慎用继承只有符合is-a关系才使用继承如苹果 is a 水果优先组合如果只是为了复用功能考虑使用组合而非继承抽象类命名建议使用Abstract前缀如AbstractEmployee重写加注解重写方法务必加上Override注解便于编译器检查单一职责每个抽象类应有明确的抽象意图避免上帝类 设计原则里氏替换原则所有引用父类的地方必须能透明地使用其子类的对象。这是继承设计的重要原则。六、结语继承和抽象类是Java面向对象编程的倚天剑和屠龙刀。继承让代码复用变得简单抽象类让规范设计变得清晰。掌握这两个特性你就能构建出层次分明、易于扩展的Java应用体系。在实际开发中要牢记继承是强关系使用需谨慎抽象是约束设计要合理。建议多通过实战案例加深理解逐步形成良好的面向对象设计思维。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

深圳网站优化提供商网站建设与维护很累吗

Spark命令行工具终极指南:如何在Shell中快速生成数据可视化图表 【免费下载链接】spark ▁▂▃▅▂▇ in your shell. 项目地址: https://gitcode.com/gh_mirrors/spark/spark Spark是一个轻量级的命令行工具,专门用于在终端中生成简洁的Sparkli…

张小明 2026/1/1 18:48:39 网站建设

iis装网站国内免费的建网站平台

这部分用的比较少,仅作为了解。1、视图是虚拟存在的表,视图中的数据并不在数据库中真实存在,自定义查询基表,视图只保存sql逻辑,不保存查询结果。(用于查询)datagrip数据库出现文件夹views放视图…

张小明 2026/1/1 4:56:57 网站建设

没有备案号的网站个人网站作品欣赏

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2026/1/1 18:48:35 网站建设

揭阳网站制作方案工信部网站备案

第一章:环境监测的 Agent 数据融合在现代物联网系统中,环境监测依赖于多个分布式 Agent 节点采集温度、湿度、光照等数据。这些 Agent 运行在边缘设备上,具备本地计算能力,能够预处理数据并与其他节点通信。实现高效的数据融合是提…

张小明 2026/1/2 23:05:35 网站建设