重学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)) 找…

大珩PPT助手一键颜色设置

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

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

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

账号安全基本措施2

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

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

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

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

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

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

详情更多 wechat:嵌入式工程师成长日记 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 成果总结 前言 没有完美的跨端技术,只有适合的场景。脱离适用场景去谈跨端技术没有什么意义。 一、常见因素 共享代码库: React Native 允许开发者编写…

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

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

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

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

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

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

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

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

海康Visionmaster-常见问题排查方法-启动阶段

VM试用版启动时,弹窗报错:加密狗未安装或检测异常;  问题原因:安装VM 的时候未选择软加密,选择了加密狗驱动,此时要使用软授权就出现了此现象。  解决方法: ① 首先确认软加密驱动正确安装…

机器学习入门:玩转sklearn库,AI写作

首先,这篇文章是基于笔尖AI写作进行文章创作的,喜欢的宝子,也可以去体验下,解放双手,上班直接摸鱼~ 按照惯例,先介绍下这款笔尖AI写作,宝子也可以直接下滑跳过看正文~ 笔尖Ai写作:…

达芬奇调色:色彩理论入门

写在前面 整理一些达芬奇调色的笔记博文内容涉及: 一级调色是什么,以及 调色素材格式 log,raw,rec709 简单认知理解不足小伙伴帮忙指正 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候&#…

基于SpringBoot+Vue的企业资产管理系统设计与实现

1、系统演示视频(演示视频) 2、需要请联系

hexo配置教程、主题使用及涉及的技术学习

一、背景 最近,一直想做一个属于自己的网站.可以从零开始搭建一个网站,顺便可以把日常中学到的技术用于实战,还可以顺便记录自己的所思所感,记录成长的过程. 方案 一开始的方案是从零开始,模仿常见个人博客的设计,基于vueSpringbootMySQL的去实现网站. 新建项目之后,发现vu…

C/C++ 入门(7)string类(STL)

个人主页:仍有未知等待探索-CSDN博客 专题分栏:C 请多多指教! 目录 一、标准库中的string 1、了解 2、string类常用接口说明 1、常见的构造函数 2、容量操作 ​编辑 3、访问及遍历操作 4、修改操作 5、非成员函数 二、string类实现 …

如何训练一个大语言模型(LLMs)

目录 前言大语言模型 Vs机器学习模型训练过程步骤1:数据策划(Data Curation)步骤2:格式化与预处理步骤3:训练模型步骤4:模型评估 LLM Leaderboard[LLM Leaderboard 2024](https://www.vellum.ai/llm-leaderboard)[Open…