Java学习之继承练习题

news/2024/4/26 4:59:32/文章来源:https://blog.csdn.net/wjkqq0921/article/details/128092075

目录

第一题

代码

输出流程分析

运行结果

考察知识点

第二题

 代码

流程分析

运行结果

 第三题

题目要求

我的代码

代码改进


第一题

代码

package com.hspedu.extends_.exercise;public class ExtendsExercise01 {public static void main(String[] args) {B b = new B();}
}
class A {A(){//默认的无参构造器System.out.println("a");}A(String name){System.out.println("a name");}
}
class B extends A {B(){//已经有this就不会有super了this("abc");System.out.println("b");}B(String name){super();System.out.println("b name");}
}

输出流程分析

1)调用B类无参构造器,因为构造器内第一行有this(),所以不会再调用父类的无参构造器

2)执行this("abc");

3)执行super();

4)执行父类即A类的无参构造器,输出a(第一次输出)

5)输出b name(第二次输出)

6)输出 b (第三次输出)

运行结果

考察知识点

1)当创建子类对象时, 不管使用子类的哪个构造器, 默认情况下总会去调用父类的无参构造器

2)在构造器中,this()和super()不能同时使用

第二题


 代码

package com.hspedu.extends_.exercise;public class ExtendsExercise02 {public static void main(String[] args) {C1 c1 = new C1();}
}
class A1 {public A1(){System.out.println("我是A类");}
}
class B1 extends A1 {public B1(){System.out.println("我是B类的无参构造");}public B1(String name) {System.out.println(name + "我是B类的有参构造");}
}class C1 extends B1 {public C1() {this("hello");System.out.println("我是c类的无参构造");}public C1(String name) {super("hahah");System.out.println("我是c类的有参构造");}
}

流程分析

1)调用this("hello");

2)调用super("hahah");

3)调用

public B1(String name) {System.out.println(name + "我是B类的有参构造");
}

需要先调用这个子类的父类的无参构造器

4)调用

class A1 {public A1(){System.out.println("我是A类");}
}
 

第一次输出:我是A类

第二次输出:hahah我是B类的有参构造

第三次输出:我是c类的有参构造

第四次输出:我是c类的无参构造

运行结果

 第三题

题目要求


1)编写 Computer 类, 包含 CPU、 内存、 硬盘等属性, getDetails 方法用于返回 Computer 的详细信息
2)编写 PC 子类, 继承 Computer 类, 添加特有属性【品牌 brand】
3)编写 NotePad 子类, 继承 Computer 类, 添加特有属性【color】
4)编写ExtendsExercise03类, 在 main 方法中创建 PC 和 NotePad 对象, 分别给对象中特有的属性赋值(即在创建对象的时候就完成对象属性的初始化), 以及从 Computer 类继承的属性赋值, 并使用方法并打印输出信息(在子类中创建打印信息的方法,然后调用

我的代码

package com.hspedu.extends_.exercise;public class Computer {//编写 Computer类,包含 CPU、 内存、 硬盘等属性,// getDetails 方法用于返回 Computer 的详细信息private String cpu;private int memory;private int disk;//有参构造器,完成对象属性的初始化public Computer(String cpu, int memory, int disk) {this.cpu = cpu;this.memory = memory;this.disk = disk;}//全是private属性,创建public方法访问public String getCpu() {return cpu;}public int getMemory() {return memory;}public int getDisk() {return disk;}public String getDetails(){return "电脑CPU " + cpu + " 内存" + memory+ " 硬盘" + disk;}}
package com.hspedu.extends_.exercise;
//因为子类默认加载父类的无参构造器,但是父类定义了有参构造器,所以此处会报错
//解决方法:用super()指定构造器
public class PC extends Computer{private String brand;public PC(String cpu, int memory, int disk, String brand) {super(cpu, memory, disk);this.brand = brand;}public String getBrand() {return brand;}public void showInfo(){System.out.println(getDetails() + " 品牌" + brand);}
}
package com.hspedu.extends_.exercise;public class NotePad extends Computer{private String color;//根据继承的规则,此处会自动调用父类的构造器//即父类构造器完成父类属性的初始化//子类构造器完成子类属性的初始化public NotePad(String cpu, int memory, int disk, String color) {super(cpu, memory, disk);this.color = color;}public String getColor() {return color;}public void showInfo(){System.out.println(getDetails() + " 颜色" + color);}}

运行类

package com.hspedu.extends_.exercise;
// 在main方法中创建PC和NotePad对象,分别给对象中特有的属性赋值,
//以及从Computer类继承属性赋值,并使用方法并打印输出信息
//题目含义:创建PC类和NotePad对象,分别给他们的父类属性和子类属性赋值
//打印出这两个对象的属性信息
public class ExtendsExercise03 {public static void main(String[] args) {PC pc = new PC("AMD",16,340,"联想");pc.showInfo();NotePad notePad = new NotePad("intel", 8, 400, "白色");notePad.showInfo();}
}

结果

 

 

代码改进

 

用get和set方法完成封装

父类:Computer

package com.hspedu.extends_.exerciseteacher;public class Computer {private String CPU;private int memory;private int disk;//构造器public Computer(String CPU, int memory, int disk) {this.CPU = CPU;this.memory = memory;this.disk = disk;}//封装public String getCPU() {return CPU;}public void setCPU(String CPU) {this.CPU = CPU;}public int getMemory() {return memory;}public void setMemory(int memory) {this.memory = memory;}public int getDisk() {return disk;}public void setDisk(int disk) {this.disk = disk;}//返回信息public String getDetails(){return "CPU=" + CPU + " memory=" + memory +" disk=" + disk;}
}

 子类:PC

package com.hspedu.extends_.exerciseteacher;public class PC extends Computer{private String brand;public PC(String CPU, int memory, int disk, String brand) {super(CPU, memory, disk);this.brand = brand;}//封装public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}//返回信息public void printInfo(){System.out.println("======PC信息如下======");System.out.println(getDetails() + " brand=" + brand);}
}

子类:NotePad

package com.hspedu.extends_.exerciseteacher;public class NotePad extends Computer{private String color;public NotePad(String CPU, int memory, int disk, String color) {super(CPU, memory, disk);this.color = color;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public void printInfo(){System.out.println("======NotePad信息如下======");System.out.println(getDetails() + " color=" + color);}
}
package com.hspedu.extends_.exerciseteacher;public class ExtendsExercise03 {public static void main(String[] args) {PC pc = new PC("AMD", 16, 350, "苹果");pc.printInfo();NotePad notePad = new NotePad("intel", 8, 400, "银灰色");notePad.printInfo();}
}

运行结果

 

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

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

相关文章

Sentinel-2(哨兵2数据介绍)

哥白尼 Sentinel-2(哨兵 2)计划是一个由两颗相同的 Sentinel-2 极轨卫星组成的星座,两颗卫星相位差 180,运行在平均高度 786 km 的太阳同步轨道上。每颗卫星在其轨道上的位置由双频全球导航卫星系统(GNSS)接…

ggrcs 包2.4绘制RCS(限制立方样条图)实际操作演示(1)

ggrcs 包2.4版本已经发布一段时间了,大概几个月了吧,收到不少好评, 没听说太大的问题,最主要的问题有两个: 1.是说变量不是数字变量。 2.是说数据超过10万,无法处理 第一个问题非常好处理,这…

R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计

全文链接:http://tecdat.cn/?p19664 MCMC是从复杂概率模型中采样的通用技术。蒙特卡洛马尔可夫链Metropolis-Hastings算法(点击文末“阅读原文”获取完整代码数据)。问题如果需要计算有复杂后验pdf p(θ| y)的随机变量…

简单聊聊什么是react-redux,它能解决哪些问题

或许 在大多数人眼中 redux是一个相对复查很多的知识点 但确实如果你熟悉了流程 其实也比较简单的 redux是一个数据管理方案 我们先来举个例子 目前我们知道 react中有两种组件数据通信的方式 分别是 props 父传子 定义事件 子传父 通过事件将自己的数据传给父级 那如果是兄弟…

领悟《信号与系统》之 周期信号的傅里叶变换计算

周期信号的傅里叶变换计算一、周期信号的傅里叶变换存在的条件二、周期信号的傅里叶变换例题:一、周期信号的傅里叶变换存在的条件 典型非周期信号(如指数信号,矩形信号等)都是满足绝对可积(或绝对可和)条…

一种高选择性和灵敏的荧光生物标记物,可用于标记碱性磷酸酶 (ALP),5-FAM-Alkyne,510758-19-7,荧光生物标记物

【中文名称】5-羧基荧光素-炔烃【英文名称】 FAM alkyne,5-isomer,5-FAM alkyne【结 构 式】 【CAS号】510758-19-7 【分子式】C24H15NO6【分子量】413.39【基团】炔基基团【纯度】95%【规格标准】5mg,10mg,25mg,包装灵活&#x…

使用PyTorch实现简单的AlphaZero的算法(3):神经网络架构和自学习

神经网络架构和训练、自学习、棋盘对称性、Playout Cap Randomization,结果可视化 从我们之前的文章中,介绍了蒙特卡洛树搜索 (MCTS) 的工作原理以及如何使用它来获得给定棋盘状态的输出策略。我们也理解神经网络在 MCTS 中的两个主要作用;通…

xss-labs/level9

这一关界面感觉跟上一关很像 所以我们注入上一关的为编码的答案 javascript:alert(xss) 没能弹窗 查看源代码 他说我输入的链接不合法 我压根没有输入链接 我觉得后台应该是做了一个条件的判断 应该是要有链接才会在第二处输出点回显我们的输入 根据上面的猜测 我们构造如下…

Java.Integer.bitCount(int)源码解析

bitCount前言一、由易到难,头脑热身二、简单优化,一题多解三、分治优化四、bitCount(int)源码优化总结参考文献前言 如何求解一个二进制中1的个数?有常规的O(N)法,还有基于分治的O(logN),即Java的bitCount(int)方法。…

我们为什么喜欢看疯狂科学家开飞艇?

很多人可能不是科幻迷,也在日常生活中接触过蒸汽朋克。为什么呢?很简单——蒸汽朋克几乎无处不在。相比其他科幻流派,蒸汽朋克可能算是最“出圈”的一种。简单地说,蒸汽朋克是一种科幻小说类型,由“蒸汽 ”(steam)和“…

《论文阅读》DeepSFM: Structure From Motion Via Deep Bundle Adjustment

留个笔记自用 DeepSFM: Structure From Motion Via Deep Bundle Adjustment 做什么 首先是最基础的,Structure-from-Motion(SFM),SFM可以简单翻译成运动估计,是一种基于dui8序列图片进行三维重建的算法。简单来说就…

移动跨平台开发跨家选型参考建议

从 iPhone 诞生至今,智能手机风靡全球已将近20年,智能手机操作系统 iOS 和 Android 也成为当仁不让的顶流般的存在,而作为其背后的灵魂,移动应用也随着技术的发展已经越来越丰富。如果从技术层面来讲,移动 App 也从最开…

(1)点云库PCL学习——点云的格式、PCD文件的打开和显示

1、主要参考 (1)格式说明: 点云库PCL学习——点云的格式、PCD文件的打开和显示 ROS知识:点云文件.pcd格式_无水先生的博客-CSDN博客_pcd文件 (2)点云滤波,对nan的滤波 Python点云数据处理(三)滤波与RANSAC分割 - …

省 市 县 三级联动

大纲 一、导入省市县数据表(t_region) 二、引入jar包 三、导入所需util类(整体框架) 四、编写代码 1、配置数据库相关信息(数据库名、用户名、密码) config.propreties #oracle9i #driveroracle.jdbc.driver.OracleDriver #urljdbc:oracle:thin:loca…

jsp393学生宿舍管理系统mysql

两个权限 管理员和 学生 1. 学生信息管理 添加学生信息(学生号,姓名 院系 班级入学日期 )修改学生信息 学生退宿舍(可以删除指定的学生也可以成批删除) 2. 宿舍信息管理 宿舍的基本信息(公寓数 宿舍…

第五届“强网”拟态防御国际精英挑战赛——特邀战队篇

第五届“强网”拟态防御国际精英挑战赛即将在南京隆重开赛!本届大赛面向全球顶尖CTF战队,在创新应用场景与技术的基础上,拓展升级赛道,全面覆盖典型网络设备。大赛汇集国内外60支精英战队,参赛阵容、数量再创新高。 本…

科普下抖音的规则,为什么别人的内容很容易火,而我的很难?

今天给大家科普下抖音的规则,为什么别人的内容很容易火,而我的很难? 上一篇给大家讲了现在做抖音还来得及么?肯定的回答,一直都来得及。 既然来得及,那么我们怎么才能做好抖音呢? 在我看来&a…

5 - 2 单选题

1.下列线索二叉树中(用虚线表示线索),符合后序线索树定义的是:B 后序线索二叉树的构建流程就是: 1.后序遍历二叉树:d b c a 2.第一个结点的前驱是NULL,即d的前驱,d的左孩子为NULL …

web表单(详解)

目录 1. 表单的概述 1.1 表单组成 2. 表单标记 2.1 input标记 2.2 select标记 2.3 textarea标记 3.HTML5新增标记 3.1 datalist标记 3.2 date 输入类型 3.3 color输入类型 3.4 button标记 3.5 details标记和summary标记 3.6 progress标记 3.7 meter标记 4 综合…

云原生微服务治理技术朝无代理架构的演进之路

摘要:本文基于对微服务治理技术从SOA, 微服务框架,到云原生架构的历史发展总结,提出了一种新的基于Javaagent技术的新一代无代理架构的服务治理技术,并介绍了其相关的代表性开源项目Sermant。本文分享自华为云社区《云原生微服务治…