首页 分享 [Java] 继承与抽象类相关题目

[Java] 继承与抽象类相关题目

来源:萌宠菠菠乐园 时间:2024-11-16 02:57
目录 继承与抽象类相关题目1. 继承a. 问答题b. 问答题c. 编程题d. 编程题 2. 抽象类a. 问答题b. 编程题 3. 模板设计模式a. 编程题

继承与抽象类相关题目

1. 继承

a. 问答题

1. 请问子类继承父类用什么关键字?继承使用 extends 关键字。 2. 请问子类继承父类的好处是什么?提高了代码的复用性,让类与类之间产生继承关系(多态的前提)。 3. 请问父类的哪些成员不能被继承,或者不能被访问?父类中的构造方法不能被子类继承,父类中的私有成员变量和成员方法能够被子类继承,只是无法直接访问,可以间接访问父类中的私有成员。 4. 请问子类是否可以同时继承多个父类?不可以,Java 中的类只能单继承,但可以多层继承,Java 中所有的类都直接或间接继承了 Object 类。

123456789101112131415161718 b. 问答题 this 对象代表的是 Student 对象还是 Person 对象?

class Person { public Person() { System.out.println("this:" + this); } } class Student extends Person { public Student() { } } public class Demo1 { public static void main(String[] args) { new Student(); } }

1234567891011121314151617181920

参考答案:

创建子类对象的时候,默认会先调用父类的构造方法。如果创建子类对象的时候,子类对象调用了父类的方法,那么父类的方法 this 代表的是子类对象。整个代码中只是创建了 Student 对象,何来Person对象?所以 this 代表的是 Student对象(谁调用就代表谁)。 c. 编程题 题目:
我们计划为一个电器销售公司制作一套系统,公司的主要业务是销售一些家用电器,例如:电冰箱、洗衣机、电视机产品。
类的设计为: 冰箱类
属性:品牌、型号、颜色、售价、门款式、制冷方式;洗衣机类
属性:品牌、型号、颜色、售价、电机类型、洗涤容量;电视类
属性:品牌、型号、颜色、售价、屏幕尺寸、分辨率。 要求:
请根据上述类的设计,抽取父类“电器类”,并代码实现父类“电器类”、子类“冰箱类”,“洗衣机类”、“电视类”。

参考答案:

电器类

/** * 电器 */ public class ElectricalAppliance { //成员变量 private String brand; //品牌 private String model; //型号 private String color; //颜色 private double price; //售价 //空参构造 public ElectricalAppliance() { } //全参构造 public ElectricalAppliance(String brand, String model, String color, double price) { this.brand = brand; this.model = model; this.color = color; this.price = price; } //getter & setter 略... }

1234567891011121314151617181920212223 冰箱类

/** * 冰箱 */ public class Refrigerator extends ElectricalAppliance { private String doorStyle; //门款式 private String refrigerationMode; //制冷方式 //空参构造 public Refrigerator() { } //全参构造 public Refrigerator(String brand, String model, String color, double price, String doorStyle, String refrigerationMode) { super(brand, model, color, price); this.doorStyle = doorStyle; this.refrigerationMode = refrigerationMode; } //getter & setter 略... }

1234567891011121314151617181920 洗衣机类

/** * 洗衣机 */ public class WashingMachine extends ElectricalAppliance { private String motorType; //电机类型 private String washingCapacity; //洗涤容量 //空参构造 public WashingMachine() { } //全参构造 public WashingMachine(String brand, String model, String color, double price, String motorType, String washingCapacity) { super(brand, model, color, price); this.motorType = motorType; this.washingCapacity = washingCapacity; } //getter & setter 略... }

1234567891011121314151617181920 电视类

/** * 电视 */ public class Television extends ElectricalAppliance { private String screenSize; //屏幕尺寸 private String resolutionRatio; //分辨率 //空参构造 public Television() { } //全参构造 public Television(String brand, String model, String color, double price, String screenSize, String resolutionRatio) { super(brand, model, color, price); this.screenSize = screenSize; this.resolutionRatio = resolutionRatio; } //getter & setter 略... }

1234567891011121314151617181920 d. 编程题 题目:
我们计划为一个动物园制作一套信息管理系统,根据与甲方沟通,我们归纳了有以下几种动物需要记录到系统中: 鸟类:鹦鹉、猫头鹰、喜鹊哺乳类:大象、狼、长颈鹿爬行类:鳄鱼、蛇、乌龟 要求:
请根据以上需求,使用“继承”设计出三层的类结构: 动物类: 鸟类:
鹦鹉类
猫头鹰类
喜鹊类哺乳类:
大象类
狼类
长颈鹿类爬行类:
鳄鱼类
蛇类
乌龟类 作为父类的类都应该定义一些共性内容,每种子类也都有一些特定的内容;
重点是类的层次结构,类成员简单表示即可。

参考答案:

动物类

/** * 动物 */ public class Animal { private int age; //年龄 public void move() { System.out.println("动物会动..."); } //空参构造、全参构造、getter、setter 略... } 12345678910111213 鸟类

/** * 鸟类 */ public class Bird extends Animal { //重写父类的方法 @Override public void move() { System.out.println("鸟在天上飞..."); } //空参构造、全参构造、getter、setter 略... } 12345678910111213 鹦鹉类

/** * 鹦鹉 */ public class Parrot extends Bird { } 123456 猫头鹰类

/** * 猫头鹰 */ public class Owl extends Bird { } 123456 喜鹊类

/** * 喜鹊 */ public class Magpie extends Bird { } 123456 哺乳类

/** * 哺乳类 继承动物类 */ public class Mammal extends Animal { //重写父类的方法 @Override public void move() { System.out.println("哺乳动物拥有快速运动的能力..."); } //自己特有的方法 public void nervousSystem() { System.out.println("哺乳动物拥有发达的神经系统..."); } //空参构造、全参构造、getter、setter 略... }

123456789101112131415161718 大象类

/** * 大象 继承哺乳类 */ public class Elephant extends Mammal { } 123456 狼类

/** * 狼 继承哺乳类 */ public class Wolf extends Mammal { } 123456

长颈鹿类

/** * 长颈鹿 继承哺乳类 */ public class Giraffe extends Mammal { } 123456

爬行动物

/** * 爬行类 继承动物类 */ public class Reptile extends Animal { //重写父类的方法 @Override public void move() { System.out.println("爬行动物都在地表爬行..."); } //自己特有的方法 public void ectotherm() { System.out.println("爬行动物没有体温调节能力..."); } //空参构造、全参构造、getter、setter 略... }

123456789101112131415161718 鳄鱼类

/** * 鳄鱼 继承爬行类 */ public class Crocodile extends Reptile { } 123456 蛇类

/** * 蛇 继承爬行类 */ public class Snake extends Reptile { } 123456 乌龟类

/** * 乌龟 继承爬行类 */ public class Tortoise extends Reptile { } 123456

2. 抽象类

a. 问答题

1. 请问定义抽象类、抽象方法使用的关键字是什么?定义抽象的关键字是 abstract 2. 请问定义抽象类有什么作用?抽象类的作用是为了被子类继承,体现的是模板思想。 3. 请问定义抽象方法有什么作用?抽象方法只有方法签名,没有方法体,需要被子类重写,起到了“规范”的作用。 4. 请问一个类继承了抽象类后,必须要做的事情是什么?继承抽象类后,必须要重写抽象类中的抽象方法。 5. 请问抽象类是否可以继承其它抽象类?抽象类可以继承其他的抽象类,继承其他抽象类后,可以选择性的重写父类中的抽象方法。

1234567891011121314151617181920 b. 编程题 题目:
我们计划为一所体育学校设计一套系统,需要记录以下人员的信息: 教练员:
属性:员工编号、姓名、性别、年龄
行为:吃饭(吃工作餐)运动员:
属性:学员编号、姓名、性别、年龄、所在班级
行为:吃饭(吃营养餐) 要求:
请根据需求,设计、并编码实现:父类 “人员类”,子类 “教练员类”、子类 “运动员类”,并包含共有的属性和行为的定义,由于运动员和教练员的吃饭的内容不同,所以需要设计为 “抽象方法”。

3. 模板设计模式

a. 编程题 题目:
某公司的系统中需要记录两类员工: 员工类:
属性:工号、姓名、年龄
行为:发布通知经理类:
属性:工号、姓名、年龄、年终奖额
行为:发布通知
任何员工发布“通知”都统一使用以下格式:
通知:
xxxxxxxxx
xxxxxxxxx
必胜环球科技有限公司 要求:
请按需求为这两个类定义一个父类,并使用 “模板” 发布通知。

参考答案:

人员类

/** * 人员类 */ public abstract class Person { private String id; //编号 private String name; //性别 private String gender; //性别 private int age; //年龄 //空参构造 public Person() { } //全参构造 public Person(String id, String name, String gender, int age) { this.id = id; this.name = name; this.gender = gender; this.age = age; } //吃饭(抽象方法) public abstract void eat(); //getter、setter 略... }

12345678910111213141516171819202122232425262728 教练员类

/** * 教练员 继承人员类 */ public class Coach extends Person { //空参构造 public Coach() { } //全参构造 public Coach(String id, String name, String gender, int age) { super(id, name, gender, age); } //重写父类中的抽象方法 @Override public void eat() { System.out.println("教练员吃工作餐..."); } //getter、setter 略... }

1234567891011121314151617181920212223 运动员类

/** * 运动员 继承人员类 */ public class Athletes extends Person { //特有属性 private String className; //所在班级名称 //空参构造 public Athletes() { } //全参构造 public Athletes(String id, String name, String gender, int age, String className) { super(id, name, gender, age); this.className = className; } //重写父类中的方法 @Override public void eat() { System.out.println("运动员吃营养餐"); } //getter、setter 略... }

123456789101112131415161718192021222324252627

原文链接:https://qwert.blog.csdn.net/article/details/105336764

相关知识

编写Java程序,以继承和多态思想模拟饲养员喂养不同动物的不同行为
java对抽象类的理解与实践
java特性封装、抽象、继承、多态理论
java用继承编写宠物乐园
Java面向对象
java基于控制台宠物养成 java游戏宠物
Java分别采用继承、多态、抽象类、接口实现猫和狗的入门案例
Java小程序之 人(person)喂养猫(cat)和狗(dog)统称为动物(Animal),要求:运用抽象类、继承 提示:Animal为抽象类,Cat、Dog为..........
【免费】Sun宠物店例子资源
java继承

网址: [Java] 继承与抽象类相关题目 https://www.mcbbbk.com/newsview566256.html

所属分类:萌宠日常
上一篇: 红蝽杆菌纲促进肠道健康的用途的制
下一篇: 桃子精萌宠乐园,与动物共享欢乐的

推荐分享