当前位置: 首页 > 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;我们的这个国…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...