重学java 22.面向对象 继承、抽象综合案例

我们纵横交错,最后回到原点

                                —— 24.4.23

综合案例

流程思维图

代码实现

方式1 利用set方法为属性赋值

父类:

public abstract class Development extends Employee{}

子类1:

public class JavaEE extends Development{@Overridepublic void work() {System.out.println("员工号为"+this.getId()+"的"+this.getName()+"正在开发网站");}
}

子类2:

public class Android extends Development{@Overridepublic void work() {System.out.println("员工号为"+this.getId()+"的"+this.getName()+"正在开发APP");}
}

 子类的子类:

public abstract class Employee {private int id;private String name;public Employee() {}public Employee(int id, String name) {this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public abstract void work();
}

测试类:

public class Demo117Test {public static void main(String[] args) {JavaEE javaEE = new JavaEE();javaEE.setId(1);javaEE.setName("大壮");javaEE.work();System.out.println("————————————————————");Android android = new Android();android.setId(2);android.setName("图图");android.work();}
}

运行结果:

方式2 利用构造赋值

父类:

public abstract class Development extends Employee{public Development() {}public Development(int id, String name) {super(id, name);}
}

子类1:

public class JavaEE extends Development{public JavaEE() {}public JavaEE(int id, String name) {super(id, name);}@Overridepublic void work() {System.out.println("员工号为"+this.getId()+"的"+this.getName()+"正在开发网站");}
}

子类2:

public class Android extends Development{public Android() {}public Android(int id, String name) {super(id, name);}@Overridepublic void work() {System.out.println("员工号为"+this.getId()+"的"+this.getName()+"正在开发APP");}
}

 子类的子类:

public abstract class Employee {private int id;private String name;public Employee() {}public Employee(int id, String name) {this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public abstract void work();
}

测试类:

public class Demo118Test2 {public static void main(String[] args) {JavaEE javaEE = new JavaEE(1,"张三");javaEE.work();System.out.println("——————————————————————");Android android = new Android(2,"李四");android.work();}
}

运行结果:

总结

1.继承

        ①概述:子类继承父类,可以直接使用父类中的非私有成员,子类不要写重复代码,提高了代码的复用率

        ②关键字:extends

        ③成员访问特点:a、成员变量:看符号左边是谁先调用谁中的成员变量,子类没有找父类

                                     b、成员方法:看new的是谁先调用谁中的成员方法,子类没有找父类

        ④方法的重写:a、概述:子类中有一个和父类从方法名以及参数列表上一样的方法

                                 b、验证:@Override

                                 c、使用场景:功能的升级改造

        ⑤继承中的构造的特点:new子类对象时先初始化父类

        ⑥继承的特点:

                        a、继承只支持单继承,不能多继承

                        b、继承支持多层继承

                        c、一个父类可以有多个子类

2.super和this关键字

        ①super

                a、概述:代表的是父类引用

                b、使用:调用父类构造方法:super()        super(实参)

                                 调用父类成员变量:super.成员变量名

                                 调用父类成员方法:super.成员方法名(实参)

         ②this

                a、概述:代表的是当前对象:哪个对象调用的this所在的方法this就代表哪个对象

                b、使用:调用当前对象的构造:this()        this(实参)

                                 调用当前对象的成员变量:this.成员变量名

                                 调用当前对象的成员方法:this.成员方法名(实参)

         ③注意

                super和this如果在构造中使用,都必须在第一行,所以不能同时手写出来

3.抽象

        ①抽象方法:修饰符 abstract 返回值类型 方法名(形参);

        ②抽象类:public abstract class 类名{}

        ③特点:

                a、抽象方法所在的类一定是抽象类

                b、抽象类中不一定必须有抽象方法

                c、抽象类中可以有私有属性构造,其他方法等

                d、抽象类不能new对象,只能new子类对象

                e、抽象类中可以有构造方法,但是是供创建子类对象时,初始化父类属性使用的

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

mPEG-Poly(lactide),Methoxy-PEG-PLA是由单甲氧基聚乙二醇(mPEG)和聚乳酸(PLA)通过酯键连接而成的嵌段共聚物

【试剂详情】 英文名称 mPEG-PLA,Methoxy-PEG-Poly(lactide), mPEG-Poly(lactide),Methoxy-PEG-PLA 中文名称 聚乙二醇单甲醚聚乳酸两嵌段共聚物 外观性状 由分子量决定,固体或者粘稠液体。 分子量 0.4k,0.6k&a…

react实现时钟翻牌效果

需求:随着数字的变动要求有时钟翻动动效 问题:只在加载时有动效 解决方案:通过判断数字改变(这里通过新旧数值变动来判断,不贴代码啦),每次变动的时候手动把animationIterationCount设置为inf…

SCADA系统通过巨控GRM模块实现OPC协议远程监控PLC

SCADA系统和PLC不在同一个地方,需要远程监控和控制PLC,可以通过巨控GRM模块来实现,通过OPC协议转巨控服务器远程读写PLC寄存器,从而完成远程监控PLC。 要实现SCAKDA系统远程监控PLC,关键是要实现SKADA能通过互联网访问…

autodl私有云使用方法(管理员端)

(ICL智能计算实验室自用)https://private.autodl.com/私有云的网址,注册,获得个人的ID,是否实名根据个人情况选择。 选择这个, 所有主机部分查看私有的服务器所有的机器。方便管理。 团队管理点击红色圈出…

阿里云全球基础设施展示,公共云地域、边缘节点、超级数据中心分布图

阿里云基础设施覆盖全球四大洲,从中心地域、本地地域到边缘计算节点等进行了多形态基础设施部署,更好的满足多样化的业务和场景需求,为广大用户享受云计算的优质体验提供坚实基础。本文为大家展示2024年截至目前阿里云的全球基础设施&#xf…

第九讲 - Java面向对象

第九讲 - Java面向对象 文章目录 第九讲 - Java面向对象1. 类和对象1.1 类和对象的理解1.2 类的定义1.3 对象的使用1.4 学生对象-练习 2. 对象内存图2.1 单个对象内存图2.2 多个对象内存图 3. 成员变量和局部变量3.1 成员变量和局部变量的区别 4. 封装4.1 封装思想4.2 private关…

SpringBoot项目启动,传参有哪些方式?

SpringBoot项目启动,传参有哪些方式? 1.Spring级别的参数 直接在启动 Spring Boot 应用的命令行中使用 -- 后跟参数名和值的方式来传递参数。 记住:一般是对于Spring Boot应用特有的配置参数,确保它们遵循Spring Boot的配置属性命…

windows/linux 安装php的 sql server 扩展

Windowsphpstudyphp7.1 下载:ODBC、下载php 的sql server 扩展 路径:下载地址 版本:我的是7.1 对应的ODBC 是13,php 的sql server 扩展为4.3 安装:msodbcsql 直接安装、sqlsrv43 安装完把 扩展复制到php71 的扩展文…

中台架构下的性能测试实践方法

有同学私信问我:中台服务建设过程中,性能测试如何开展?问题背景如下: 业务背景:银行业务; 技术架构:业务应用和中台之间请求统一走ESB; 当前阶段:中台建设中,…

记录一下用MobaXterm建立隧道的配置

【为什么要建立隧道】 在公司环境中,我们通过本地Windows机器没法直接访问公司的服务器(安全考虑,都装了防火墙),要访问公司服务器的通常做法是,在本机安装个代理插件(如Proxy SwitchyOmega&am…

什么因素可以影响到代理IP稳定性?爬虫代理IP有哪些作用?

一、什么因素可以影响到代理IP稳定性 代理IP的稳定性受到多种因素的影响,以下是一些主要的因素: 代理IP的质量:不同的代理IP提供商提供的代理IP质量参差不齐,一些低质量的代理IP可能经常出现连接问题或速度慢的情况,…

有人说展会变成了零售?

最近在听楼下的阿姨们都在讨论他们在展会上淘来的宝贝,价格便宜,货物优美,原因是附近的平乡自行车展会刚刚结束。 从朋友圈里来看,有的去年参展的企业今年没有去参展,有的企业也在坚持参展并告诉展位的位置&#xff0…

qmt教程2----订阅单股行情,提供源代码

链接 qmt教程2----订阅单股行情,提供源代码 (qq.com) qmt教程1---qmt安装,提供下载链接 今天我重新封装了全部qmt的内容,包括数据,交易 qmt交易 我本来打算全部上次git的,但是考虑到毕竟是实盘的内容,就放…

Memecoin再迎爆发:是本轮牛市大反弹的开始吗?

在加密货币市场上,Memecoin再度掀起了一波热潮,引发了人们对于本轮牛市是否即将到来的猜测和期待。近期,诸如BONK、PEPE和POPCAT等Memecoin的价格出现了显著的上涨,涨幅之大令人瞠目。这一现象引发了广泛的讨论,人们开…

(vue)el-select选择框加全选/清空/反选

(vue)el-select选择框加全选/清空/反选 <el-form-item label"批次"><el-selectv-model"formInline.processBatch"multiplecollapse-tagsfilterableplaceholder"请选择"style"width: 250px"no-data-text"请先选择企业、日…

程序员英语之Spring篇

spring.io/quickstart 本期课程讲解Spring官网的快速上手页面 官网地址 https://spring.io/quickstart Spring Quickstart Guide Spring 快速开始指南 Guide 指南 What you’ll build 接下来你将要构建的是什么&#xff1f; build 构建 You will build a classic “H…

科学高效备考AMC8和AMC10竞赛,吃透2000-2024年1850道真题和解析

如何在校内学习之余科学、有效地备考AMC8、AMC10美国数学竞赛&#xff1f;多做真题&#xff0c;吃透真题是科学有效的方法之一&#xff0c;通过做真题&#xff0c;可以帮助孩子找到真实竞赛的感觉&#xff0c;而且更加贴近比赛的内容&#xff0c;可以通过真题查漏补缺&#xff…

AIGC技术的发展现状与未来趋势

AIGC&#xff08;人工智能生成内容&#xff09;技术是近年来快速发展的领域之一&#xff0c;它涉及使用人工智能来创建或编辑内容&#xff0c;包括文本、图像、音乐和视频等。这项技术的进步为各个行业带来了革命性的变化&#xff0c;同时也引发了一系列伦理和风险问题。 一、技…

ACL的知识点和实验

1.ACL的组成 ACL由若干条permit或deny语句组成。每条语句就是该ACL的一条规则&#xff0c;每条语句中的permit或deny就是与这条规则相对应的处理动作。 2.规则编号 &#xff08;1&#xff09;一个ACL中的每一条规则都有一个相应的编号。 &#xff08;2&#xff09;步长是系…

嵌入式Linux driver开发实操(二十二):写一个ALSA驱动程序

如何编写ALSA(高级Linux声音体系结构)驱动程序?比如PCI声卡。在其他设备类型的情况下,API也可能有所不同。然而,至少ALSA内核API是一致的。对开发者而言需要具备足够的C语言技能和基本的linux内核编程知识。什么时在ALSA上编写PCI声音驱动程序的标准方法? ALSA驱动程序的…