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

[Java 基础]面向对象-继承

继承,可以理解为和现实生活中的继承是一样的概念,比如:儿子继承了父亲的一些特性,面貌、身材、性格等。

在面向对象编程中,继承的概念与之类似。它允许我们创建一个新的类(子类 或 派生类),该类可以自动拥有另一个已经存在的类(父类 或 超类 或 基类)的属性(成员变量)和行为(成员方法)。子类可以在继承父类的基础上,添加自己特有的属性和行为,或者修改父类的行为。
继承的主要目的:

  1. 代码重用 (Code Reusability): 子类可以直接使用父类中已经定义好的属性和方法,避免了重复编写相同的代码,提高了开发效率。

建立类层次结构 (Establishing Class Hierarchy): 继承可以创建一种“is-a”(是一个)的关系,将相关的类组织成一个层次结构,使得程序结构更加清晰和易于理解。例如,“狗”是一个“动物”,“猫”也是一个“动物”,它们都继承了“动物”的一些通用特征。

  1. 提高代码的可维护性 (Maintainability): 当父类的属性或方法需要修改时,所有继承自该父类的子类也会自动继承这些修改。这简化了代码的维护工作。
  2. 实现多态性 (Polymorphism) 的基础: 继承是实现多态性的前提条件之一,多态性允许我们以统一的方式处理不同类型的对象。

如何在 Java 中实现继承?

在 Java 中,我们使用 extends 关键字来实现类的继承。语法如下:

class 子类名 extends 父类名 {// 子类自己的属性和方法
}

关键概念:

  • 父类 (Superclass/Base Class): 被继承的类
  • 子类 (Subclass/Derived Class): 继承父类的类
  • extends 关键字: 用于声明一个类继承另一个类
  • 继承关系是单向的: 子类可以继承父类的成员,但父类不能继承子类的成员
  • Java 只支持单继承: 一个类只能直接继承一个父类。但是,一个类可以实现多个接口(接口我们后面会学习)
  • 继承的内容: 子类会继承父类中非 private 的属性和方法。private 的成员只能在父类内部访问,子类无法直接访问
  • 构造方法不能被继承: 但是,子类的构造方法可以通过 super() 关键字调用父类的构造方法

代码示例:Animal 类和 Dog 类

让我们创建一个 Animal 类作为父类,然后创建一个 Dog 类作为 Animal 的子类来演示继承的概念:

// 父类:Animal
public class Animal {String name;int age;public Animal(String name, int age) {this.name = name;this.age = age;System.out.println("Animal 的构造方法被调用。");}public void eat() {System.out.println(name + " 正在吃东西。");}public void sleep() {System.out.println(name + " 正在睡觉。");}
}// 子类:Dog,继承自 Animal
public class Dog extends Animal {String breed; // 狗特有的属性public Dog(String name, int age, String breed) {super(name, age); // 调用父类的构造方法初始化 name 和 agethis.breed = breed;System.out.println("Dog 的构造方法被调用。");}public void bark() {System.out.println(name + " 正在汪汪叫!");}// 重写父类的 eat() 方法(Override)@Overridepublic void eat() {System.out.println(name + " 这只 " + breed + " 正在啃骨头。");}public static void main(String[] args) {Dog myDog = new Dog("旺财", 3, "金毛");// 子类继承了父类的属性和方法System.out.println("名字:" + myDog.name);System.out.println("年龄:" + myDog.age);myDog.eat();   // 调用子类重写后的 eat() 方法myDog.sleep(); // 调用父类的 sleep() 方法// 子类自己特有的属性和方法System.out.println("品种:" + myDog.breed);myDog.bark();}
}

继承是面向对象编程中实现代码重用和构建类层次结构的重要手段。通过 extends 关键字,子类可以继承父类的非私有成员,并在此基础上扩展自己的功能。合理地使用继承可以使我们的代码更加简洁、易于维护和扩展。

http://www.xdnf.cn/news/12091.html

相关文章:

  • QML技术优势
  • GuessNumber
  • CET6 仔细阅读 24年12月第三套-C2 美的定义这一块
  • 【opnecv】检测桌子上多余的物品
  • 《复制粘贴的奇迹:小明的原型工厂》
  • python打卡第44天
  • AI大模型学习三十二、飞桨AI studio 部署 免费Qwen3-235B与Qwen3-32B,并导入dify应用
  • CSS 选择器全解析:分组选择器/嵌套选择器,从基础到高级
  • 关于如何运用AI的思考
  • Day44 Python打卡训练营
  • ATM存取钱项目
  • 【DeepSeek 学大模型推理】Fused Residual LayerNorm with Reduce-Scatter
  • MySQL事务:从ACID特性到高并发优化的深度解析
  • day 44
  • K8S主机漏洞扫描时检测到kube-服务目标SSL证书已过期漏洞的一种永久性修复方法
  • 【论文写作】如何撰写基于模型拼接(A+B)的创新性论文
  • leetcode 二叉搜索树中第k小的元素 java
  • SiFli 567+emmc Standby休眠报错问题
  • 重装系统+驱动+磁盘分区
  • day19 leetcode-hot100-37(二叉树2)
  • 5.29-6.4解决问题归纳
  • 银行用户信誉等级
  • 前端面试宝典---vite原理解析
  • Numpy——结构化数组和Numpy文件
  • 【电赛培训课程】电子设计竞赛工程基础知识
  • 使用qt 定义全局钩子 捕获系统的键盘事件
  • 《人性的弱点》核心总结
  • AI基础认知
  • 【Python连接数据库基础 06】Pandas与SQL协同:解锁大规模数据处理新境界,让分析效率飙升10倍
  • 代理IP:6G标准化进程中的隐形推手