Java的继承

继承(Inheritance)

【1】类是对对象的抽象:

举例:

荣耀20 ,小米 红米3,华为 p40 pro   ---> 类:手机类

【2】继承是对类的抽象:

举例:

学生类:Student:

属性:姓名,年龄,身高,学生编号

方法:吃饭,睡觉,喊叫,学习

教师类:Teacher:

属性:姓名,年龄,身高,教师编号

方法:吃饭,睡觉,喊叫,教学

员工类:Emploee:

属性:姓名,年龄,身高,员工编号

方法:吃饭,睡觉,喊叫,工作

共同的东西:

人类:

属性:姓名,年龄,身高

方法:吃饭,睡觉,喊叫

学生类/教师类/员工类  继承 自   人类  

以后定义代码:

先定义人类:

人类: ---》父类,基类,超类

属性:姓名,年龄,身高

方法:吃饭,睡觉,喊叫

再定义 : ---》子类,派生类

学生类:Student:

属性:学生编号

方法:学习

教师类:Teacher:

属性:教师编号

方法:教学

员工类:Emploee:

属性:员工编号

方法:工作 

子类  继承自  父类 

狗类:

属性:姓名,年龄,身高

方法:吃饭,睡觉,喊叫

我们的继承关系,是在合理的范围中进行的抽取 ,抽取出子类父类的关系:

上面的案例中:

学生类/教师类/员工类  继承 自   人类   ---》合理

学生类/教师类/员工类  继承 自   狗类   ---》不合理

区分:

学生是一个人

教师是一个人

员工是一个人   ---》合理

学生是一个狗    ---》不合理

总结:继承 就是  is - a 的关系 

【3】代码层面的解释: 

先写父类,再写子类:

父类:人类  Person

子类:学生类   Student

1.package com.msb.test03;
2.
3./**
4. * @Auther: msb-zhaoss
5. */
6.public class Person {
7.    //属性:
8.    private int age;
9.    private String name;
10.    private double height;
11.
12.    //提供setter getter方法:
13.
14.    public int getAge() {
15.        return age;
16.    }
17.
18.    public void setAge(int age) {
19.        this.age = age;
20.    }
21.
22.    public String getName() {
23.        return name;
24.    }
25.
26.    public void setName(String name) {
27.        this.name = name;
28.    }
29.
30.    public double getHeight() {
31.        return height;
32.    }
33.
34.    public void setHeight(double height) {
35.        this.height = height;
36.    }
37.
38.    //方法:
39.    public void eat(){
40.        System.out.println("可以吃饭。。。");
41.    }
42.
43.    public void sleep(){
44.        System.out.println("可以睡觉。。。");
45.    }
46.
47.}

1.package com.msb.test03;
2.
3./**
4. * @Auther: msb-zhaoss
5. */
6.public class Student extends Person {//子类Student 继承  父类Person
7.    //属性:
8.    private int sno;//学号
9.
10.    public int getSno() {
11.        return sno;
12.    }
13.
14.    public void setSno(int sno) {
15.        this.sno = sno;
16.    }
17.
18.    //方法:
19.    public void study(){
20.        System.out.println("学生可以学习");
21.    }
22.
23.}
1.package com.msb.test03;
2.
3./**
4. * @Auther: msb-zhaoss
5. */
6.public class Test {
7.    //这是一个main方法,是程序的入口:
8.    public static void main(String[] args) {
9.        //创建子类Student的对象
10.        Student s = new Student();
11.        s.setSno(1001);
12.        s.setAge(18);
13.        s.setName("菲菲");
14.        s.setHeight(180.4);
15.
16.        System.out.println("学生名字为:"+s.getName()+",学生的年纪:"+s.getAge());
17.
18.        //访问方法:
19.        s.study();
20.        s.eat();
21.        s.sleep();
22.    }
23.}
24.

【4】继承的好处:提高代码的复用性

父类定义的内容,子类可以直接拿过来用就可以了,不用代码上反复重复定义了

需要注意的点:

父类private修饰的内容,子类实际上也继承,只是因为封装的特性阻碍了直接调用,但是提供了间接调用的方式,可以间接调用。

【5】总结:

(1)继承关系 :

父类/基类/超类

子类/派生类

子类继承父类一定在合理的范围进行继承的    子类 extends  父类

(2)继承的好处:

1.提高了代码的复用性,父类定义的内容,子类可以直接拿过来用就可以了,不用代码上反复重复定义了

2.便于代码的扩展

3.为了以后多态的使用。是多态的前提。

(3)父类private修饰的内容,子类也继承过来了。

(4)一个父类可以有多个子类。

(5)一个子类只能有一个直接父类。

但是可以间接的继承自其它类。

6)继承具有传递性:

Student --》继承自  Person  ---》继承自Object

Object类是所有类的根基父类。

所有的类都直接或者间接的继承自Object。

【1】private:权限:在当前类中可以访问

【2】default:缺省修饰符:权限:到同一个包下的其他类都可以访问

【3】protected:权限:最大到不同包下的子类

【4】public:在整个项目中都可以访问

总结:

属性,方法:修饰符:四种:private,缺省,protected,public

类:修饰符:两种:缺省,public

以后写代码

一般属性:用private修饰 ,方法:用public修饰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汽车CAN/ CAN FD数据记录仪在上汽大通诊断测试部门的应用

CAN/CANFD数据诊断记录仪在 规格:数据记录诊断仪 功能:CAN(FD)数据记录 UDS诊断 WIFI收发报文

Matlab绘制双坐标轴图示例函数yyaxis

一、前言 出于一些需求,我们需要将两个不同属性的参量绘制在同一张图上,但是两个参量属性不同,即单位不同,纵坐标值分布范围不同,此刻,我们只需要将一个参量的值在y轴左侧展示,另一个参量的值在…

【Linux】冯诺依曼体系结构、操作系统、进程概念、进程状态、环境变量、进程地址空间

目录 一、冯诺依曼体系结构二、操作系统(OS)1. 操作系统是什么2. 操作系统如何做管理3. 系统调用和库函数概念 三、进程1. 进程是什么?2. 描述进程-PCB3. 查看进程的方法 四、进程状态1 运行、阻塞和挂起状态2 Linux中的进程状态 五、进程优先级1. 什么是优先级2.查…

仅从个人的角度,聊聊年底的程序员招聘与入职情况

Hello,大家好,我是 Sunday。 一般到了年底,招聘的 HC 都会大规模的缩减。特别是在今年这样的一个行情之下,很多公司因为不确定明年的项目情况,都会开始大规模的停止招聘甚至是开始裁员。 所以,从理论上来…

[vs2017]_[初级]_[常用快捷键*持续更新]

场景 vs系列不具备IDEAJ的CtrlF2显示当前类的所有方法,有什么替代方法? 说明 有时候开发的时候在不同的文件跳转编辑函数是常有的,只是vs2017不具备IDEAJ (CtrlF2)的显示文件结构的能力, 那么如果显示当前文件所有方…

2023第十七届中国品牌节 | 每日互动刘宇分享大模型创新应用AITA智选人群工具

11月18日-20日,2023第十七届中国品牌节在杭州市云栖小镇国际会展中心盛大举行。本次活动以“复苏与腾飞”为主题,来自政、商、产、学、媒等各界嘉宾6000余位济济一堂,共同见证民族品牌的崛起,携手奉献一场史无前例的“品牌人的亚运…

亚马逊防关联如何做?看这一篇就够了

我们都知道亚马逊在众多跨境电商平台里属于严格的那个,商家们常常调侃亚马逊死法千万种,但最惨的还是账户被平台关联封号。有的新手刚注册还没开始就被关联封号了,有的业绩不错的店铺操作没注意,在别的地方登录了一下就被封了&…

【Flink】核心概念:任务槽(Task Slots)

任务槽 每个 worker(TaskManager)都是一个 JVM 进程,可以在单独的线程中执行一个或多个 subtask。为了控制一个 TaskManager 中接受多少个 task,就有了所谓的 task slots(至少一个)。 每个任务槽&#xf…

MongoDB随记

MongoDB 1、简单介绍2、基本术语3、shard分片概述背景架构路由功能chunk(数据分片)shard key(分片键值) 4、常用命令 1、简单介绍 MongoDB是一个分布式文件存储的数据库,介于关系数据库和非关系数据库之间&#xff0c…

SpringDoc基础配置和集成OAuth2登录认证教程

本期内容 学会通过注解和Java代码的方式添加SpringDoc配置。在swagger-ui提供的页面上提供OAuth2登录认证,在集成Security的情况下便捷获取access_token并在请求时按照OAuth2规范携带。 为什么集成OAuth2登录认证? 现在大部分教程是在swagger-ui页面添…

系列十、ReentrantReadWriteLock

一、概述 ReentrantReadWriteLock是ReadWriteLock的一个子类,具有读锁和写锁的双重功能,通常用于做缓存。 二、案例代码 2.1、ReentrantReadWriteLockCache /*** Author : 一叶浮萍归大海* Date: 2023/11/20 17:57* Description: 使用ReentrantReadWri…

go的字符切片和字符串互转

Go 1.21 // 返回一个Slice,它的底层数组自ptr开始,长度和容量都是len func Slice(ptr *ArbitraryType, len IntegerType) []ArbitraryType // 返回一个指针,指向底层的数组 func SliceData(slice []ArbitraryType) *ArbitraryType // 生成一…

学习笔记5——对象、直接内存、执行引擎,string

学习笔记系列开头惯例发布一些寻亲消息 链接:https://baobeihuijia.com/bbhj/contents/3/192486.html 创建对象的步骤 对象对应的类是否被加载,链接(链接到真实的内存地址),初始化(类初始化)…

P2444 [POI2000] 病毒

[P2444 POI2000] 病毒 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 问题等价于在字典图中找一个环,这个环要满足环上节点不是所有所给字符串最后一个字符结尾的点。 找环算法: void dfs(int u) {in[u] 1; // u在当前dfs路径中for(auto y: g[u]) {…

机器学习笔记 - FlowNet:使用卷积网络学习光流

一、概述 卷积神经网络(CNN)对各种计算机视觉任务做出了巨大贡献。最近,CNN 已成功用于估计光流。与传统方法相比,这些方法在质量上取得了很大的提高。在此,我们将对以下论文进行简要回顾。 FlowNet1.0和FlowNet2.0都是端到端架构。FlowNet2.0是FlowNetCorr和FlowNetS的堆…

Linux常见命令手册

目录 文件命令 文件和目录命令 文件的权限命令 文件搜索命令 进程命令 查看进程命令 关闭进程命令 用户和群组命令 网络命令 firewall-cmd 网络应用命令 高级网络命令 网络测试命令 网络安全命令 网络配置命令 软件管理命令 系统信息命令 vi编辑器 关机命令…

【android】install android NDK

目录 1 下载NDK 2 解压 3 android-ndk的配置 1 下载NDK 下载网址:NDK 下载 | Android NDK | Android Developers 如果没有所需要的版本,则点击页面下面 不受支持的 NDK 下载需要的版本。 2 解压 将压缩文件(例如 android-ndk-r25c-…

webpack 中,filename 和 chunkFilename 的区别

filename filename 是一个很常见的配置,就是对应于 entry 里面的输入文件,经过webpack打包后输出文件的文件名。比如说经过下面的配置,生成出来的文件名为 index.min.js。 chunkFilename chunkFilename 指未被列在 entry 中,却…

C语言求解猴子吃桃问题

这是一道经典的数学问题,可以使用递归或循环两种方法来解决。 递归方法: 假设第10天猴子有x个桃子吃,那么第9天猴子一定有(x 1) * 2个桃子,以此类推,可以得到第1天猴子要有多少个桃子才能保证最后剩下1个。 代码如…

使用 Splashtop 的开放 API 简化 IT 工作流程

我们的工作方式在不断变化,IT 技术人员必须迅速适应时代的变化。越来越多的公司正在转向混合和远程策略,这为那些在服务台或IT技术人员工作的人增加了额外的工作层。对于系统管理员来说,管理一切都可能变得更加复杂。 找到合适的软件来管理多…