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

http://www.lqws.cn/news/141103.html

相关文章:

  • 得力Deli GE330W打印机信息
  • 如何流畅播放体育电竞赛事?
  • 三角形类CTriangle
  • python打卡day44
  • day 44
  • 【Bluedroid】蓝牙启动之gatt_init 流程源码解析
  • NLP学习路线图(二十二): 循环神经网络(RNN)
  • Linux进程调度:从时间片到实时任务的交响乐
  • 深入理解计算机进制:从原理到 C++ 实现
  • uniapp uni-id-co errCode“:“uni-id-captcha-required“,“errMsg“:“Captcha required
  • [华为eNSP] 在eNSP上实现IPv4地址以及IPv4静态路由的配置
  • kafka命令
  • Oj系统测试报告
  • Postgresql常规SQL语句操作
  • 软件工程:如何在项目中把软件做好
  • linux_centos7.x的ifconfig命令显示内容详解
  • 对抗性提示:大型语言模型的安全性测试
  • 【向量化模型如何私有化部署】一文说清原理、流程与最佳实践
  • 验证负载均衡与弹性伸缩
  • 猎板硬金镀层厚度:新能源汽车高压系统的可靠性基石
  • 【Windows开发】Windows 事件跟踪 (ETW)
  • QGIS新手教程3:QGIS矢量图层导入与导出+Shape Tools插件绘图
  • window 显示驱动开发-提供视频解码功能(二)
  • simulink这边重新第二次仿真时,直接UE5崩溃,然后simulink没有响应
  • 易基因:贵州省医刘代顺团队MeRIP-seq揭示m6A修饰在病毒感染中的免疫调控作用 | 项目文章
  • 深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
  • 数学复习笔记 26
  • matlab实现高斯烟羽模型算法
  • 灰狼优化算法MATLAB实现,包含种群初始化和29种基准函数测试
  • nt!CcInitializeCacheMap函数分析初始化Vacbs结构