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

面向对象的第二个基本特征:继承011026

1.什么是继承?

生活中:

        继承 ---> 延续

                ---> 扩展

代码中:

        继承 ---> 重复使用已有的类的代码(复用)

                ---> 扩展已有类的代码(扩展)

2.为什么要继承?

① 代码的复用和扩展

② 满足is - a 的关系

事物的分类来说,子类别的关系

Student is a Person.

Teacher is a Person

Car is not a Person

3.如何继承

关键字:extends

语法格式:

【修饰符】 class  子类名  extends  父类名{

}

子类:SubClass,又称为派生类

父类:SuperClass,又称为基类,超类

子类表示的事物范围大,还是父类表示事物的范围大?

如:Person类(人)是父类

       Student类(学生)是子类

       子类  <  父类

子类更具体,里面的成员描述更多

父类更抽象,笼统的描述信息更少

4.继承有什么特点?

① 子类会继承父类所有的实例变量和实例方法,如果理解这句话?

A:虽然子类继承了父类的所有实例变量和实例方法。但是因为权限修饰符的原因,某些成员在子类中不能直接使用,可以间接使用。private修饰的成员,在子类中是不能直接使用的。权限修饰符缺省的成员,在跨包的子类中是不能直接使用的。本包子类可以。

B:这里说的继承所有,是说,子类代表的这个事物,它具备父类中所描述的所有特征。

类的定义:一类具有相同特征的事物的抽象描述。

例如:Person类中有name,age属性,eat()方法

这些特征无论它是否私有,对于子类Student类,它都应该有这个特征。

C:既然是子类继承了所有的实例变量,那么在子类对象创建时,需要在子类对象的堆空间中开辟对应的内存来存它的值。

D:所谓的继承,不是说,父类的代码在子类中完全重复一遍,而是在使用子类时,除了可以用自己本类声明的成员,还可以去父类中寻找可以(看权限修饰符)用的成员。

② java中只支持单继承,即一个子类只能有一个“直接”父类

比喻:一个人只有一个亲生父亲

③ java支持多层继承

比喻:祖宗很多代,代代相传

④ 一个java父类,可以同时有多个子类

Idea中,选中某个类,Ctrl + H,查看继承关系

选中某个类,Ctrl + Alt +  U,以继承树的方式查看继承关系

5.继承后调用父类声明的属性和方法

在继承的时候,子类会继承父类所有的成员变量(实例变量)和成员方法(实例方法)

既然可以继承,

① 在子类外面,子类的对象是否可以使用父类中声明的成员变量和成员方法,只要权限修饰符允许,通过子类对象可以直接使用父类中声明的成员变量和成员方法

② 在子类中,如果要用到父类声明成员变量和成员方法,只要权限修饰符允许,可以直接使用,不需要通过“对象 . ” 的方式来引用父类中声明的成员变量和成员方法。

练习代码:

Person类:

① 声明父类:Person类

- 包含属性:姓名,年龄,性别,属性私有化,

- 包含get/set方法

- 包含getInfo()方法:例如:姓名:张三,年龄:23,性别:男

public class Person {private String name;private int age;private char gender;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}public String getInfo(){return "姓名:" + name +",年龄:" + age + ",性别:" + gender;}
}

Student类代码:

② 声明子类:Student类,继承Person类

- 新增属性:score成绩,属性私有化,

- 包含get/set方法

- 重写getInfo()方法:例如:姓名:张三,年龄:23,性别:男,成绩:89

public class Student extends Person{private int score;public int getScore() {return score;}public void setScore(int score) {this.score = score;}@Overridepublic String getInfo() {return super.getInfo() + ",成绩:" + score;}}

Teacher类代码:

③ 声明子类:Teacher类,继承Person类

- 新增属性:salary薪资,属性私有化,

- 包含get/set方法

- 重写getInfo()方法:例如:姓名:张三,年龄:23,性别:男,薪资:10000

public class Teacher extends Person {private double salary;public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}@Overridepublic String getInfo() {return super.getInfo() + ",薪资:" + salary;}
}

TestPerson类代码:

④ 在测试类的main方法中创建三个类的对象,并调用相应的方法测试

public class TestPerson {public static void main(String[] args) {Person p = new Person();p.setName("张三");p.setGender('男');p.setAge(25);System.out.println(p.getInfo());Student s = new Student();s.setName("张三丰");s.setAge(5);s.setGender('男');s.setScore(89);System.out.println(s.getInfo());Teacher t = new Teacher();t.setName("柴林燕");t.setAge(18);t.setGender('女');t.setSalary(10000);System.out.println(t.getInfo());}
}

相关文章:

面向对象的第二个基本特征:继承011026

1.什么是继承&#xff1f; 生活中&#xff1a; 继承 ---> 延续 ---> 扩展 代码中&#xff1a; 继承 ---> 重复使用已有的类的代码&#xff08;复用&#xff09; ---> 扩展已有类的代码&#xff08;扩展&#xff09; 2.为什么要继承&#xff1f; ① 代码的复用和…...

机器学习项目实战-能源利用率 Part-3(特征工程与特征筛选)

博主前期相关的博客可见下&#xff1a; 机器学习项目实战-能源利用率 Part-1&#xff08;数据清洗&#xff09; 机器学习项目实战-能源利用率 Part-2&#xff08;探索性数据分析&#xff09; 这部分进行的特征工程与特征筛选。 三 特征工程与特征筛选 一般情况下我们分两步走…...

WebSocket的那些事(2-实操篇)

目录 一、概述二、Websocket API1、引入相关依赖2、配置WebSocket处理器3、WebSocket配置4、测试 三、总结 一、概述 在上一节 WebSocket的那些事&#xff08;1-概念篇&#xff09;中我们简单的介绍了关于WebSocket协议的相关概念、与HTTP的联系区别等等。 这一节将会带来Web…...

BurpSuite—-Target模块(目标模块)

前言 本文主要介绍BurpSuite—-Target模块(目标模块)的相关内容 关于BurpSuite的安装可以看一下之前这篇文章&#xff1a; http://t.csdn.cn/cavWt Target功能 目标工具包含了SiteMap&#xff0c;用你的目标应用程序的详细信息。它可以让你定义哪些对象在范围上为你目前的工…...

部门来了个测试开发,听说是00后,上来一顿操作给我看呆了...

公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍&#xff01…...

Godot引擎 4.0 文档 - 入门介绍 - Godot简介

本文为Google Translate英译中结果&#xff0c;DrGraph在此基础上加了一些校正。英文原版页面&#xff1a;Introduction to Godsot — Godot Engine (stable) documentation in English Godot简介 本文旨在帮助您确定 Godot 是否适合您。我们将介绍该引擎的一些广泛功能&#…...

数据通信基础 - 码元速率 和 数据速率 详解

文章目录 1 概述1.1 码元速率&#xff08;波特率&#xff09;1.2 数据速率&#xff08;比特率&#xff09;1.3 码元速率 和 数据速率 换算 2 网工软考真题 1 概述 1.1 码元速率&#xff08;波特率&#xff09; 码元速率&#xff1a;表示单位时间内信号波形的变换次数&#xf…...

听我一句劝,别去外包,干了三年,废了....

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...

全域兴趣电商:国货品牌的新策略、新玩法

【潮汐商业评论/原创】 消费的方向标已经变了。 在消费市场的滚滚浪潮里&#xff0c;国人的“衣食住行”在全面的“国货化”&#xff0c;一个个有颜值有实力的国货品牌如雨后春笋般出现在寻常百姓家&#xff0c;如今在这片肥沃的土壤上正结出适合国人使用的果实。 01 国货二…...

嵌入式 Linux 入门(十一、make 和 MakeFile)

嵌入式 Linux 入门第十一课&#xff0c;Make 工具和 Makefile 的引入...... 矜辰所致目录 前言一、Linux 下多文件编译二、make 工具和 Makefile2.1 make 和 Makefile 是什么?2.2 通过 STM32 提前熟悉 Makefile2.3 GCC 与 make 的关系/区别&#xff1f; 三、一个简单的 Makefi…...

Serverless冷扩机器在压测中被击穿问题 | 京东云技术团队

一、现象回顾 在今天ForceBot全链路压测中&#xff0c;有位同事负责的服务做Serverless扩容&#xff08;负载达到50%之后自动扩容并上线接入流量&#xff09;中&#xff0c;发现新扩容的机器被击穿&#xff0c;监控如下&#xff08;关注2:40-3:15时间段的数据&#xff09;&…...

数仓中指标-标签,维度-度量,自然键-代理键等各名词深度解析

作为一个数据人&#xff0c;是不是经常被各种名词围绕&#xff0c;是不是对其中很多概念认知模糊。有些词虽然只有一字之差&#xff0c;但是它们意思完全不同&#xff0c;今天我们就来了解下数仓建设及数据分析时常见的一些概念含义及它们之间的关系。 本文首发于公众号【五分钟…...

Baumer工业相机堡盟工业相机使用BGAPI SDK将图像数据转换为Bitmap的几种方式(C++)(Mono)

Baumer工业相机堡盟工业相机使用BGAPI SDK将图像数据转换为Bitmap的几种方式&#xff08;C&#xff09; Baumer工业相机Baumer工业相机图像数据转为Bitmap的技术背景Baumer工业相机使用BGAPISDK将图像数据转换为Bitmap的几种方式1.引用合适的类文件2.BGAPI SDK原始图像数据为Bi…...

C++笔试笔记2

C笔试笔记2 百富计算机的笔试 const限定符&#xff1a;首先作用于左边&#xff0c;如果左边没东西&#xff0c;就作用于右边。 const int&#xff1a; 左边没有内容&#xff0c;所以const作用于右边&#xff0c;就是“整型常量”。等同于int const&#xff1b; int * const&am…...

手写Spring框架

手写Spring框架 各位道友&#xff0c;我发现现在贼卷底层代码&#xff0c;看完源码发下几天后&#xff0c;额&#xff01;&#xff01;&#xff01;我当时看了啥&#xff01; 还是自己写个迷你的spring框架&#xff0c;这样印象更加深刻&#xff0c;上干货&#xff0c;代码仓…...

微服务学习笔记--(Docker)

目录 初识DockerDcoker的基本操作Dockerfile自定义镜像Docker-ComposeDocker镜像服务 初始Docter 什么是DockerDocker和虚拟机的区别Docker架构安装Docker 初识Docker-什么是docker 项目部署的问题 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会碰…...

ChatGPT 国内版免费

ChatGPT 是最新的聊天机器人技术&#xff0c;它可以让你更快地完成各种任务。如果你想要一个在国内的免费版本&#xff0c;你来对地方了&#xff01;在这篇文章中&#xff0c;我们将会分享与你 ChatGPT的最新信息&#xff0c;以及在国内使用 ChatGPT 的方法。如果你想要了解更多…...

推荐5个免费好用的UI模板网站!

1、即时设计 即时设计资源广场是一个聚集了大量优秀设计作品和大厂设计系统超过3000个UI组件库的设计师灵感库。该广场每月更新上百个精品模板&#xff0c;且还将这些模板分门别类按不同类型素材进行分类&#xff0c;其丰富的设计资源包括移动设计、网页设计、插画、线框图、矢…...

linux 安装 maven 3.8 版本

文章目录 1&#xff1a;maven 仓库官网 2、下载安装包 3、使用&#xff1a;Xftp 上传到你想放的目录 4、解压文件 ​编辑 5、配置环境变量 ​编辑 6、刷新 /etc/profile 文件 7、查看maven 版本 1&#xff1a;maven 仓库官网 Maven – Download Apache Mavenhttps://mave…...

Redis的三种持久化策略及选取建议

文章目录 Redis的三种持久化策略及选取建议前言RDB&#xff08;快照&#xff09;概述优缺点 AOF&#xff08;追加文件&#xff09;概述优缺点AOF刷盘策略AOF重写 选取正确的持久化策略AOF和RDB的选择AOF与RDB的混合模式AOF重写和RDB持久化的冲突AOF校验机制三种模式的选择建议 …...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...