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

[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 关键字,子类可以继承父类的非私有成员,并在此基础上扩展自己的功能。合理地使用继承可以使我们的代码更加简洁、易于维护和扩展。

相关文章:

  • 【el-progress】element UI 进度条组件
  • 时间序列预测:LSTM与Prophet对比实验
  • Spring AI Tool Calling
  • 深入解析Java17核心新特性(密封类、模式匹配增强、文本块)
  • C++ 变量三
  • 前端八股之JS的原型链
  • 项目实战——C语言扫雷游戏
  • MySQL ACID 面试深度解析:原理、实现与面试实战
  • SARIMA时间序列分析:三大模型对比
  • Python网页数据抓取常用的库及方法介绍
  • SpringBoot+Mybatisplus配置多数据源(超级简单!!!!)
  • C# 一个解决方案放一个dll项目,一个dll测试项目 ,调试dll项目的源码
  • NLP学习路线图(二十三):长短期记忆网络(LSTM)
  • BERT vs Rasa 如何选择 Hugging Face 与 Rasa 的区别 模型和智能体的区别
  • 祝贺XC3576H通过银河麒麟桌面操作系统的兼容性测试,取得麒麟软件互认证证书
  • tensorflow image_dataset_from_directory 训练数据集构建
  • 力扣刷题Day 70:在排序数组中查找元素的第一个和最后一个位置(34)
  • python3GUI--车牌、车牌颜色识别可视化系统 By:PyQt5(详细介绍)
  • 【更新至2024年】1991-2024年上市公司信息披露质量KV指数数据(含原始数据+计算过程+结果)
  • Vue跨层级通信
  • wordpress后台左侧菜单/端点seo博客
  • 茶文化网站制作/网上找客户有什么渠道
  • dz网站数据备份恢复/优秀营销软文100篇
  • 胶州城乡建设局网站/b2b平台是什么意思
  • php建站系统/seo网站制作优化
  • 承德的网站建设公司/cpa推广联盟平台