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

【面向对象】04面向对象三大特征之——继承

文章目录

      • 一、super
        • 1.构造方法
        • 2.属性
        • 3.方法
      • 二、规则
      • 三、继承权限

继承

继承是Java中实现代码重用的重要手段之一。使用继承,可以减少代码量,方便修改代码。Java中只支持单根继承,即一个类只能有一个直接父类。

继承使用关键字extends,让一个类和另一个类建立起父子关系。

// 编写父类
[访问修饰符] class Pet { //公共的属性和方法
}// 编写子类,继承父类
[访问修饰符] class Dog extends Pet { //子类特有的属性和方法
}

符合is-a关系的设计使用继承

一、super

子类访问父类成员使用super 关键字,super 代表父类对象。

1.构造方法

访问父类构造方法,在子类构造方法中调用且必须是第一句

class Parent {Parent(int x) {System.out.println("Parent constructor with x: " + x);}
}
class Child extends Parent {Child(int x) {super(x);  // 调用父类构造函数System.out.println("Child constructor");}
}
2.属性

访问父类属性,不能访问父类中定义为private 的属性

class Parent {int num = 10;
}
class Child extends Parent {int num = 20;void printNum() {System.out.println(num);    // 子类的numSystem.out.println(super.num);  // 使用super访问父类的num}
}
3.方法

访问父类方法,不能访问父类中定义为private 的方法

class Parent {void display() {System.out.println("Display from Parent");}
}
class Child extends Parent {void display() { super.display() // 调用父类的display方法System.out.println("Display from Child");}
}

二、规则

继承条件下构造方法的调用规则

  • 系统默认调用父类的无参构造方法
  • 子类构造方法通过super 显式调用父类的有参构造方法。执行父类相应构造方法,而不执行父类无参构造方法
  • 子类构造方法通过this 显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则

三、继承权限

  • 继承public 和protected 修饰的属性和方法,不管子类和父类是否在同一个包里

  • 继承默认权限修饰符 修饰的属性和方法,但子类和父类必须在同一个包里

  • 不能被继承的父类成员:private成员;子类与父类不在同包,使用默认访问权限的成员;构造方法

http://www.lryc.cn/news/428738.html

相关文章:

  • 计算机毕业设计Python+Flask弹幕情感分析 B站视频数据可视化 B站爬虫 机器学习 深度学习 人工智能 NLP文本分类 数据可视化 大数据毕业设计
  • 用基础项目来理解spring的作用
  • Json-复杂泛型解析工具类
  • CLIP-VIT-L + Qwen 多模态学习笔记 -3
  • 如何将网站地图Sitemap提交至百度、谷歌及Bing搜索引擎
  • DC-DC FB分压电阻计算 (MP1584 SY8205为例)
  • ESLint详解及在WebStorm中的应用
  • 数据库系统 第20节 云数据库
  • 用excel内容批量建立文件夹
  • SIRA-PCR: Sim-to-Real Adaptation for 3D Point Cloud Registration 论文解读
  • IDEA安装和使用(配图)
  • leetcode67. 二进制求和,简单模拟
  • Python:读写操作
  • 软体水枪在灭火工作中发挥什么作用_鼎跃安全
  • ES与MySQL数据同步实现方式
  • Prometheus 服务发现
  • 2.复杂度分析
  • ensp小实验(ospf+dhcp+防火墙)
  • Web服务器——————nginx篇
  • 【实战教程】一键升级CentOS 7.9.2009至OpenSSL 1.0.2u:加固你的Linux服务器安全防线!
  • React 使用ref属性调用子组件方法(也可以适用于父子传参)
  • Linux CentOS java JDK17
  • 迭代与递归
  • wo是如何克服编程学习中的挫折感的?
  • vue3基础ref,reactive,toRef ,toRefs 使用和理解
  • 【Python机器学习】NLP的部分实际应用
  • LLM 压缩之二: ShortGPT
  • EmguCV学习笔记 VB.Net 5.2 仿射变换
  • Fink初识
  • PyTorch的torchvision内置数据集使用,transform+pytorch联合使用