重学java 19.面向对象 继承 上

走不出的那段阴霾,很多时候只不过是,我们把它当成了唯一

                                                                                —— 24.4.22

面向对象整体知识导向:

知识梳理:

1.知道继承的好处

2.会使用继承

3.继承之后成员变量和成员方法的访问特点

4.方法的重写,知道方法重写的使用场景

5.使用this关键字调用当前对象中的成员

6.使用super关键字调用父类中的成员

7.定义抽象方法以及抽象类

8.重写抽象方法

继承

知识梳理:

① 什么是继承

② 继承的基本使用

③ 继承中成员访问特点

④ 方法的重写

一、什么是继承

1.父类是怎么形成的?

        我们定义了多个类,发现这些类中有很多重复性的代码,我们就定义了一个父类,将相同的代码抽取出来放到父类中,就可以直接使用父类中的内容了

2.怎么去继承?

        extends

        子类 extends 父类

3.注意:

        ①子类可以继承父类中私有和非私有成员,但是不能使用父类中的私有成员

        ②构造方法不能继承

4.继承怎么学习?

        ①不要从是否“拥有”来学习,要从是否能“使用”来学习

5.继承在面向对象三大特性中,更像一个代码设计思想

二、继承的基本使用

1.定义一个父类,在其中定义重复性的代码

2.定义一个子类继承父类 -> extands

        子类 extands 父类

3.创建子类对象,直接使用父类中的非私有成员

案例:

父类:

public class Employee {String name;int age;public void work(){System.out.println("工作");}private void eat(){System.out.println("员工要吃饭");}
}

子类1

public class Teacher extends Employee{}

子类2

public class Manager extends Employee{
}

测试类

public class Demo106Inherit {public static void main(String[] args) {Teacher teacher = new Teacher();teacher.name = "小王";teacher.age = 18;System.out.println(teacher.name+" "+teacher.age);teacher.work();//teacher.eat();    子类继承父类后不能使用私有成员Manager manager = new Manager();manager.name = "小明";manager.age = 25;System.out.println(manager.age+" "+ manager.name);manager.work();}
}

三、继承中成员变量和成员方法的访问特点

1.成员变量

① 子类和父类中的成员变量不重名

父类:

public class Fu {int numFu = 100;
}

子类:

public class Son extends Fu{int numSon = 10;
}

测试类:

public class Demo107Test {public static void main(String[] args) {//创建父类对象Fu fu = new Fu();System.out.println(fu.numFu);//父类中的numFu// System.out.println(fu.numZi);//不能直接调用子类中的特有成员Son son = new Son();System.out.println(son.numFu);System.out.println(son.numSon);}
}

总结:在继承的体系下,看等号左边是谁就调用谁中的成员,如果等号左边是父类类型,只能调用父类中的成员变量,如果等号左边是子类类型,既能调用子类的,还能调用父类中继承而来的非私有成员

② 子类和父类中的成员变量重名

父类:

public class Fu {int numFu = 100;int num = 10000;
}

子类:

public class Son extends Fu{int numSon = 10;int num = 100;
}

测试类:

public class Demo107Test {public static void main(String[] args) {//创建父类对象Fu fu = new Fu();System.out.println("父类中fu.numFu:"+fu.numFu);//父类中的numFu// System.out.println(fu.numZi);//不能直接调用子类中的特有成员//创建子类对象Son son = new Son();System.out.println("子类中son.numFu:"+son.numFu);System.out.println("子类中son.numSom:"+son.numSon);System.out.println("fu.num:"+fu.num);//继承了父类,可以使用父类中非私有成员System.out.println("son.num:"+son.num);//子类的}
}

总结:

        继承前提下,成员变量访问特点口诀(同样适用于多态):

                看等号左边是谁,先调用谁中的成员,子类中没有再寻找父类

2.成员方法

① 子类和父类中的成员方法不重名

父类:

public class Fu {public void methodFu(){System.out.println("我是父类中的methodFu");}
}

子类:

public class Son extends Fu{public void methodSon(){System.out.println("我是子类当中的methodSon");}
}

测试类:

public class Demo108Test {public static void main(String[] args) {Fu fu = new Fu();fu.methodFu();// fu.methodSon();不能直接调用子类特有的方法System.out.println("————————————————————");Son son = new Son();son.methodSon();son.methodFu();// 继承父类之后,能调用父类非私有成员}
}

② 子类和父类中的成员方法重名

父类:

public class Fu {public void methodFu(){System.out.println("我是父类中的methodFu");}public void method(){System.out.println("我是父类中的method方法");}
}

子类:

public class Son extends Fu{public void methodSon(){System.out.println("我是子类当中的methodSon");}public void method(){System.out.println("我是子类中的method方法");}
}

测试类:

public class Demo108Test {public static void main(String[] args) {Fu fu = new Fu();fu.methodFu();// fu.methodSon();不能直接调用子类特有的方法fu.method();System.out.println("————————————————————");Son son = new Son();son.methodSon();son.methodFu();// 继承父类之后,能调用父类非私有成员son.method();}
}

多态调用:

public class Demo108Test {public static void main(String[] args) {Fu fu = new Fu();fu.methodFu();// fu.methodSon();不能直接调用子类特有的方法fu.method();System.out.println("————————————————————");Son son = new Son();son.methodSon();son.methodFu();// 继承父类之后,能调用父类非私有成员son.method();System.out.println("————————————————————");Fu fu1 = new Son();fu1.method();// 调用的是子类中的method方法}
}

总结:

        成员方法的访问特点:成员方法看new的是谁,就调用谁中的方法,子类中没有方法再找父类(同样适用于多态

        继承中,成员变量访问特点:看等号左边是谁,先调用谁中的方法

                       成员方法访问特点:看new的是谁,先调用谁中的方法

四、方法的重写

1.概述:

        子类中有一个和父类方法名以及参数列表都相同的方法

2.前提

        继承

3.访问:

        看new的是谁,先调用谁中的,如果new的是子类,调用子类重写的方法,子类没有找父类

4.检测是否为重写方法

        在方法上写上:@Override

父类:

public class Fu {public void methodFu(){System.out.println("我是父类中的methodFu方法");}public void method(){System.out.println("我是父类中的method方法");}
}

子类:

public class Son extends Fu{public void methodSon(){System.out.println("我是子类中的methodSon方法");}@Overridepublic void method(){System.out.println("我是子类中的method方法");}
}

测试类:

public class Demo109Test {public static void main(String[] args) {Fu fu = new Fu();fu.methodFu();// 自己的methodFu方法fu.method();//new的是父类对象,那么调用的就是父类中的method方法System.out.println("————————————————————");Son son = new Son();son.methodSon();son.methodFu();son.method();// 子类中的method方法}
}

5.方法重写后的注意事项

        ①子类重写父类的方法后,权限必须要保证大于等于父类权限(权限指的是访问权限)

                public -> protected -> 默认 ->private

                

        ②子类方法重写父类方法,方法名参数列表要一样

        ③私有方法不能被重写,构造方法不能被重写,静态方法也不能被重写

        ④子类重写父类方法之后,返回值类型应该是父类方法返回值类型的子类类型

6.方法重写的使用场景

使用场景:功能升级改造,子类需要对父类中以及实现好的功能进行重新改造

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

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

相关文章

从构成看自来水厂自动化控制系统的创新与发展

自来水厂自动化控制系统涵盖了多个关键组成部分,包括水管理云平台、供水监控系统以及供水调度平台。 系统内嵌了一系列自主创新的核心算法,这些算法结合了数学建模、机器仿真和流体力学等多元数据模型,以优化设备间的关联和控制关系&#xf…

python爬虫 - 爬取html中的script数据(爬取新闻 36kr.com)

文章目录 1. 分析页面内容数据格式2. 使用re.findall方法,爬取新闻3. 使用re.search 方法,爬取新闻 1. 分析页面内容数据格式 打开 https://36kr.com/ 按F12(或 在网页上右键 --> 检查(Inspect)) 找…

CANFD帧能否唤醒CAN网络

前言 本文的撰写起因是源于AUTOSAR技术群中一位朋友的提问。他提出的问题是关于AUTOSAR网络管理功能是否支持CAN FD报文的实现。 朋友:Autosar网络管理功能有用CANFD报文实现的吗? 我:有啊,Autosar网络管理不限制报文类型是标准CAN还是CANFD 朋友:数据收发还是8字节的方式…

大珩PPT助手一键颜色设置

大珩PPT助手最新推出的一键设置文字颜色和背景色功能,为用户在创建演示文稿时带来了更便捷、高效的体验。这一功能使用户能够轻松调整演示文稿中文字的颜色和幻灯片的背景色,以满足不同场合和主题的需要。 以下是该功能的几个关键特点和优势&#xff1a…

Python多继承机制与MRO深度解析

Python多继承机制与MRO深度解析 在Python的面向对象编程中,多继承是一个强大的特性,它允许一个类继承自多个父类,从而集成多个父类的属性和方法。然而,多继承也带来了一个复杂的问题:当子类调用一个方法时&#xff0c…

2024深圳杯东三省数学建模竞赛A题个火箭残骸的准确定位代码成品论文

问题重述 绝大多数火箭为多级火箭,下面级火箭或助推器完成既定任务后,通过级间分离装置分离后坠落。在坠落至地面过程中,残骸会产生跨音速音爆。为了快速回收火箭残骸,在残骸理论落区内布置多台震动波监测设备,以接收不…

账号安全基本措施2

sudo命令 sudo(superuser do),允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。 其配置在/etc/sudoers权。它允许系统管理员集中的管理用户的使用权限和使用的主机。属性必须为0440。 语法检查: 检查语法: 修改文件时&…

什么是老年虚拟仿真实训室

在老年虚拟仿真实训室中,学生可以通过高度模拟的环境学习与老年人相关的医疗保健、护理、康复等知识和技能。以下为设备、课程和知识点的详细介绍。 设备 虚拟现实(VR)设备:包括头戴式显示器(HMD)、运动跟踪系统、手柄或手套等交互设备,用于…

XiaodiSec day014 Learn Note 小迪安全学习笔记

XiaodiSec day014 Learn Note 小迪安全学习笔记 记录得比较凌乱,不尽详细 day 14 输入输出类内容 php全局变量 server mysql插入语法insert 搜索文件,提交表单 使用Php连接数据库,使用sql语句中的like 进行模糊查询 使用php查询内容&am…

刷课必备!用Python实现网上自动做题

前言 开学少不了老师会布置一些 软件上面的作业,今天教大家用python制作自动答题脚本,100%准确率哦喜欢的同学记得关注、收藏哦 环境使用 Python3.8Pycharm 模块使用 import requests —> 数据请求模块 pip install requestsimport parsel —>…

linux设备树-时钟

Example/* external oscillator */ /*晶振&#xff0c;时钟提供者*/osc: oscillator {compatible "fixed-clock";#clock-cells <1>;clock-frequency <32678>;clock-output-names "osc";};pll: pll4c000 { /* 倍频&#xff0c; 时钟消费者…

【Qt 学习笔记】Qt常用控件 | 显示类控件 | Calendar Widget的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 显示类控件 | Calendar Widget的使用及说明 文章编号&am…

C++循环结构案例 水仙花数

for循环 #include <iostream> using namespace std;// 水仙花数是指一个 3 数&#xff0c;它的每个位上的数字的 3次幂之和等于它本身 // 利用do...while 语句 求出所有3位数中的水仙花数// 在100到999之间找到&#xff0c;所有 3次幂之和等于它本身 的数int main() {i…

基于STM32实现流水灯【Proteus仿真】

详情更多 wechat&#xff1a;嵌入式工程师成长日记 https://mp.weixin.qq.com/s?__bizMzg4Mzc3NDUxOQ&mid2247485624&idx1&sn4e553234c2624777409bd2067a07aad8&chksmcf430de0f83484f6189b119d9d83ea6e6f2a85d13afaa04d218483918231c38e6382d3007061&tok…

「React Native」为什么要选择 React Native 作为的跨端方案

文章目录 前言一、常见因素二、举个栗子2.1 项目背景2.2 为什么选择 React Native2.3 项目实施2.4 成果总结 前言 没有完美的跨端技术&#xff0c;只有适合的场景。脱离适用场景去谈跨端技术没有什么意义。 一、常见因素 共享代码库&#xff1a; React Native 允许开发者编写…

第⑮讲:Ceph集群管理与监控操作指南

文章目录 1.查看集群的状态信息2.动态的查看集群的状态信息3.查看集群的利用率4.查看OSD的资源利用率5.查看OSD的列表6.查看各组件的状态7.查看集群的仲裁信息8.查看/修改集群组件sock的配置参数 1.查看集群的状态信息 通过集群状态信息可以看到集群的健康状态、各个组件的运行…

PMP新版考试也要复习49个过程?如何复习更高效?

PMP中有五大过程组、十大知识领域&#xff0c;共计49个子过程&#xff0c;那么如何才能快速的记住这49个子过程&#xff0c;可以参考这篇文章理解加深记忆。 记忆需要花费时间&#xff1a;30分钟 记忆持续时间&#xff1a;永久 接下来按照思路进行 场景&#xff1a;大家都熟…

Springcloud中的@RefreshScope详解

一、概述 RefreshScope注解是Spring Cloud中的一个注解&#xff0c;它用来实现Bean中属性的动态刷新&#xff0c;这意味着您可以在不停止和重新启动应用程序的情况下更改配置&#xff0c;它在微服务配置中心的场景下经常出现。 二、RefreshScope 实现动态刷新的原理 1.在应用程…

粮油包装生产线的未来趋势:智能、环保与可持续发展

在当今世界&#xff0c;科技进步日新月异&#xff0c;智能化、环保和可持续发展已成为各行各业关注的焦点。粮油包装生产线作为食品产业链的重要环节&#xff0c;其未来发展趋势同样离不开这三大主题。星派将探讨粮油包装生产线的未来趋势&#xff0c;并展望其在智能、环保与可…

详解俄罗斯社媒平台VK广告推广如何开户?VK代理开户、费用、代运营流程

俄罗斯的VK&#xff08;VKontakte&#xff09;是当地常用的社交媒体平台&#xff0c;对于想要在俄罗斯市场推广产品的企业来说&#xff0c;VK广告投放是一个有效的渠道。以下是关于如何在VK上进行广告推广的开户流程、费用和代运营流程的详解&#xff1a; VK广告推广开户流程 …