【Java】继承和抽象类的练习题

简介: 【Java】继承和抽象类的练习题
  1. 继承

请用代码描述:


一只黄色的加菲猫和一条白色名称为洛洛的哈士奇狗


要求: 把猫和狗共性抽取到动物类中


1.定义动物类(Animal)

  1. 成员变量 名称(name), 颜色(color)
  2. 要求:成员变量私有,提供空参和有参的构造方法

2.定义猫类(Cat),继承Animal类

  1. 提供空参,有参构造方法,在有参构造中调用父类的构造方法

3.定义狗类(Dog)

  1. 成员变量: 品种(breed)
  2. 提供空参,有参构造方法,在有参构造中调用父类的构造方法

4.创建测试类Test

在main方法中


使用Cat类的带参构造创建猫对象 c


使用 Dog 类的带参构造创建狗对象 d


  1. 继承


 请使用代码描述:  


2岁的红色的公鸡会吃饭(啄米)和打鸣


1岁的黑色的鸭子会吃饭(吃鱼)和游泳.


提示: 把公鸡和鸭子的共性抽取家禽类中,家禽类不使用抽象类


1.定义家禽类(Poultry)

成员变量(私有):  颜色(color),年龄(age)


成员方法:  吃饭(void eat())


输出格式:  2岁的红色家禽在吃饭


提供空参和带参构造方法


提供setXxx和getXxx方法


定义公鸡类(Cock),继承Poultry类

成员方法:


重写父类的 eat()方法

输出格式::  2岁的红色公鸡在啄米


特有方法:  打鸣(crow)

输出格式::  2岁的红色公鸡在打鸣


提供空参和带参构造方法


定义鸭子类(Duck),继承Poultry类

成员方法:


重写父类的 eat()方法

输出格式: 1岁的黑色的鸭子在吃鱼

特有方法: swim()  游泳方法

输出格式:  1岁的黑色的鸭子在游泳

提供空参和带参构造方法


1.定义Test类

在main方法中


创建公鸡对象c,并把颜色赋值为”红色”,年龄赋值为2


调用公鸡对象c的吃饭方法


调用公鸡对象c的打鸣方法


创建鸭子对象 d,并把颜色赋值为”黑色”,年龄赋值为1.


调用鸭子对象 d 的吃饭方法


调用鸭子对象 d 的游泳方法


  1. 继承


请使用代码描述:  


工资为8000元的30岁的王小平老师,会吃饭(吃工作餐)和讲课.


成绩为90分的15岁的李小乐学生,会吃饭(吃学生餐)和学习.


提示: 把老师和学生的共性抽取人类中,人类不使用抽象类


定义Person类

成员变量(私有):  名称(name),年龄(age)


成员方法:  吃饭(void eat())


输出格式:  30岁的王小平在吃饭

提供空参和带参构造方法


提供setXxx和getXxx方法


定义老师类(Teacher),继承Person类

成员变量:  salary(工资)


成员方法:


重写父类的 eat()方法

输出格式:: 工资为8000元的30岁的王小平老师在吃工作餐


特有方法:  lecture() 讲课方法

输出格式:: 工资为8000元的30岁的王小平老师在讲课


提供空参和带参构造方法


提供setXxx和getXxx方法


定义学生类(Student),继承Person类

成员变量: score(成绩)


成员方法:


重写父类的 eat()方法

输出格式:: 成绩为90分的15岁的李小乐学生在吃学生餐


特有方法: study() 学习方法

输出格式:: 成绩为90分的15岁的李小乐学生在学习


提供空参和带参构造方法


提供setXxx和getXxx方法


1.定义Test类

在main方法中


创建老师对象t,并把名称赋值为”王小平”,年龄赋值为30,工资赋值为8000


调用老师对象t的吃饭方法


调用老师对象t的讲解方法


创建学生对象 s,并把名称赋值为”李小乐”,年龄赋值为14,成绩赋值为90分.


调用学生对象 s 的吃饭方法


调用学生对象 s 的学习方法



继承


正在上传…重新上传取消


正在上传…重新上传取消


正在上传…重新上传取消


正在上传…重新上传取消


正在上传…重新上传取消


1.定义动物类(Animal)

  1. 成员变量:年龄(age),腿的个数(numOfLegs)
  2. 抽象方法: void eat()
  3. 提供空参和有参构造方法和setXxx和getXxx方法

2.定义食肉类动物(Carnivore)继承自动物类(Animal)

  1. 提供空参和有参构造方法

3.定义食草类动物(Herbivore)继承自动物类(Animal)

  1. 提供空参和有参构造方法

4.定义老虎类(Tiger)继承食肉类动物(Carnivore)

  1. 重写eat()方法

输出格式: 年龄为 2的4条腿的老虎在吃羊


  1. 提供空参和有参构造方法

2.定义啄木鸟(Pecker)继承食肉类动物(Carnivore)

  1. 重写eat()方法

输出格式: 年龄为 1岁的2条腿的啄木鸟的在吃昆虫


  1. 提供空参和有参构造方法

2.定义长颈鹿(Giraffe)继承食草动物(Herbivore)

  1. 重写eat()方法

输出格式: 年龄为 3 岁的4条腿的长颈鹿在吃树叶


提供空参和有参构造方法

2.定义兔子(Rabbit)继承食草动物(Herbivore)

  1. 重写eat()方法

输出格式: 年龄为 1岁的4条腿的兔子在吃狗尾草


提供空参和有参构造方法

  1. 定义测试类Test
  2. 在main方法中


创建老虎对象 t,年龄赋值为2,腿的个数赋值为4;调用老虎对象t的eat()方法


创建啄木鸟对象 p,年龄赋值为1,腿的个数赋值为2;调用啄木鸟对象p的eat()方法


创建长颈鹿对象 g,年龄赋值为3,腿的个数赋值为4;调用长颈鹿对象g的eat()方法


创建兔子对象 r,年龄赋值为1,,腿的个数赋值为4;调用兔子对象r的eat()方法


  1. 继承 **


 按要求编写一个Java应用程序:


(1)编写一个矩形类Rect,包含:


矩形的宽width;矩形的高height。


两个构造方法:


   一个带有两个参数的构造方法,用于将width和height属性初化;


   一个不带参数的构造方法,将矩形初始化为宽和高都为10。


       两个方法:


       求矩形面积的方法area()


       求矩形周长的方法perimeter()


(2)通过继承Rect类编写一个具有确定位置的矩形类PlainRect,其确定位置用


   矩形的左上角坐标来标识,包含:


   添加两个属性:矩形左上角坐标startX和startY。


   两个构造方法:


   带4个参数的构造方法,用于对startX、startY、width和height属性初始化;


   不带参数的构造方法,将矩形初始化为左上角坐标、长和宽都为0的矩形;


添加一个方法:


   判断某个点是否在矩形内部的方法isInside(double x,double y)。如在矩形内,返回true, 否则,返回false。


 提示:点在矩形类是指满足条件:


           x>=startX&&x<=(startX+width)&&y=(startY-height)


(3)编写PlainRect类的测试程序


   创建一个左上角坐标为(10,10),长为20,宽为10的矩形对象;


   计算并打印输出矩形的面积和周长;


判断点(25.5,13)是否在矩形内,并打印输出相关信息。


  1. 抽象类


定义一个抽象类 动物类Animal,里面有一个抽象方法voice() 打印动物的叫声,


定义一个类Cat 继承动物类,实现voice方法


定义一个类Pig继承动物类,实现voice方法。


定义一个类Dog继承动物类,实现voice方法


创建测试类,创建3个对象,调用方法


  1. 抽象类


在传智播客有很多员工(Employee 抽象类),按照工作内容不同分教研部员工(Teacher)和行政部员工(AdminStaff)


教研部根据教学的方式不同又分为讲师(Lecturer)和助教(Tutor)


行政部根据负责事项不同,有分为维护专员(Maintainer),采购专员(Buyer)


公司的每一个员工都编号,姓名和其负责的工作


工作内容:


讲师: 工号为 666 的讲师 傅红雪 在讲课


助教: 工号为 668的助教 顾棋 在帮助学生解决问题


维护专员: 工号为 686 的维护专员 庖丁 在解决不能共享屏幕问题


采购专员: 工号为 888 的采购专员 景甜 在采购音响设备


  1. 抽象类


请使用代码描述:  


18岁的演员景甜会吃饭(吃小龙虾)和跳舞


30岁的歌手薛之谦会吃饭(吃大闸蟹)和唱歌.


要求: 把演员和歌手的共性抽取人类中,使用抽象类和抽象方法


定义抽象类 人类(Person)

成员变量(私有):  姓名(name),年龄(age)


抽象方法:  吃饭(void eat())


提供空参和带参构造方法


提供setXxx和getXxx方法


定义演员类(Actor),继承Person类

成员方法:


重写父类的 eat()方法

输出格式:  18岁的演员景甜在吃小龙虾


特有方法:  跳舞(dance)

输出格式:  18岁的演员景甜在跳白天鹅.


提供空参和带参构造方法


定义歌手类(Singer),继承Person类

成员方法:


重写父类的 eat()方法

输出格式: 30岁的歌手薛之谦在吃大闸蟹


特有方法: sing()  唱歌

输出格式:  30岁的歌手薛之谦在演唱丑八怪


提供空参和带参构造方法


1.定义Test类

在main方法中


创建演员对象a,并把名称赋值为”景甜”,年龄赋值为18


调用演员对象a的吃饭方法


调用演员对象a的跳舞方法


创建歌手对象 s,并把姓名赋值为”薛之谦”,年龄赋值为30.


调用歌手对象 s 的吃饭方法


调用歌手对象 s 的唱歌方法


  1. 抽象类


请使用代码描述:  


四条腿黑色的狗会吃饭(吃骨头)和看家


两条腿的绿色鹦鹉吃饭(吃小米)和说话.


要求: 把狗和鹦鹉的共性抽取动物类中,使用抽象类和抽象方法


定义抽象类 动物类(Animal)

成员变量(私有):  颜色(color),腿的个数(numOfLegs)


抽象方法:  吃饭(void eat())


提供空参和带参构造方法


提供setXxx和getXxx方法


定义狗类(Dog),继承Animal类

成员方法:


重写父类的 eat()方法

输出格式::  4条腿黑色的狗在啃骨头


特有方法:  看家(lookHome)

输出格式::  4条腿黑色的狗在看家.


提供空参和带参构造方法


定义鹦鹉类(Parrot),继承Animal类

成员方法:


重写父类的 eat()方法

输出格式:: 2条腿的绿色鹦鹉在吃小米


特有方法: say()  说明

输出格式::  2条腿的绿色鹦鹉在说你好,丑八怪


提供空参和带参构造方法

2.定义Test类

在main方法中


创建Dog对象d,并把颜色赋值为”黑色”,腿的个数赋值为4


调用Dog对象d的吃饭方法


调用Dog对象d的看家方法


创建Porrot对象 p,并把颜色赋值为”绿色”,腿的个数赋值为2.


调用Porrot对象 p 的吃饭方法


调用Porrot对象 p 的说话方法


  1. 抽象类


请用代码描述:


20岁1.75米的男孩慕容紫英有一个18岁1.6米瓜子脸女朋友欧阳青青


欧阳青青在洗一件白色的李宁牌子的衣服


慕容紫英去散步(和欧阳青青)


慕容紫英用带有阳刚之气的声音对欧阳青青说:我会守护你一生一世


欧阳青青微笑着用于甜美的声音对慕容紫英说:有你在我就安心.


要求: 男孩和女孩的共有成员提取到人类中,使用抽象类和抽象方法


定义衣服类(Clothes)

  1. 成员变量:
  1. 颜色(color)
  2. 品牌(brand)
  1. 提供 无参,带参构造和setXxx和getXxx方法
  1. 抽象类(Person)
  1. 成员变量

姓名 name


年龄 age


身高 height


1.成员方法

抽象方法  void say(String content)

2.要求

提供无参和带参构造


提供setXxx和getXxx方法


3. 定义Girl类,继承Person类


成员变量

脸型(String face)


成员方法:

重写父类的  void say(String content) 方法


输出格式: 欧阳青青微笑着用于甜美的声音对慕容紫英说:有你在我就安心.

特有方法: 洗衣服 wash(Clothes c)


输出格式: 欧阳青青在洗一件白色的李宁牌子的衣服


要求:

提供无参和带参构造


提供setXxx和getXxx方法


定义Boy类,继承Person类

成员变量

女朋友 (girlFriend)


成员方法:

重写父类的  void say(String content) 方法


输出格式:容紫英用带有阳刚之气的声音对欧阳青青说:我会守护你一生一世


特有方法: 散步 walking()


输出格式: 慕容紫英和欧阳青青在河边的林荫小道上手牵着手散步


1.要求:

提供无参和带参构造


提供setXxx和getXxx方法


5. 定义测试类Test


  1. 提供main方法
  2. 在main方法中

创建衣服对象 c,品牌初始化为李宁,颜色初始化为白色


创建女孩对象 girl,姓名赋值为欧阳青青,年龄赋值为18,身高赋值为1.6,脸型赋值为瓜子脸


创建男孩对象 boy,姓名赋值为慕容紫英,年龄赋值以为20,身高赋值1.75,女朋友赋值为girl


调用对象girl的洗衣服方法


调用对象boy的散步方法


调用对象boy的说话方法,传入:”我会守护你一生一世”


调用对象 girl 的说话方法,传入:  “有你在我就安心.”


相关文章
|
5天前
|
Java 数据安全/隐私保护
Java基础之类封装、继承、多态
Java基础之类封装、继承、多态
9 4
|
3天前
|
Java
Java面向对象特征(二)----- 继承
Java面向对象特征(二)----- 继承
Java面向对象特征(二)----- 继承
|
5天前
|
Java 开发者
JAVA多线程初学者必看:为何选择继承Thread还是Runnable,这其中有何玄机?
【6月更文挑战第19天】在Java中创建线程,可选择继承Thread类或实现Runnable接口。继承Thread直接运行,但限制了多重继承;实现Runnable更灵活,允许多线程共享资源且利于代码组织。推荐实现Runnable接口,以保持类的继承灵活性和更好的资源管理。
|
5天前
|
Java 开发者
告别单线程时代!Java 多线程入门:选继承 Thread 还是 Runnable?
【6月更文挑战第19天】在Java中,面对多任务需求时,开发者可以选择继承`Thread`或实现`Runnable`接口来创建线程。`Thread`继承直接但限制了单继承,而`Runnable`接口提供多实现的灵活性和资源共享。多线程能提升CPU利用率,适用于并发处理和提高响应速度,如在网络服务器中并发处理请求,增强程序性能。不论是选择哪种方式,都是迈向高效编程的重要一步。
|
5天前
|
Java 数据安全/隐私保护
Java基础之类封装、继承、多态
Java基础之类封装、继承、多态
8 2
|
6天前
|
Java 数据安全/隐私保护 开发者
Java是一种完全支持面向对象编程的语言,其面向对象特性包括封装、继承、多态和抽象等
【6月更文挑战第18天】**面向对象编程(OOP)通过对象封装状态和行为,实现问题域的抽象。Java全面支持OOP,核心特性包括**: - **封装**:保护数据安全,隐藏内部细节。 - **继承**:子类继承父类属性和行为,促进代码重用。 - **多态**:一个接口多种实现,增强灵活性和扩展性。 - **抽象**:通过接口和抽象类抽离共性,简化复杂性。 **Java的OOP便于理解和解决复杂系统问题。**
20 3
|
5天前
|
安全 Java 数据安全/隐私保护
Java基础之类封装、继承、多态
Java基础的封装、继承和多态是OOP的核心。封装通过访问控制(如private)隐藏类的内部细节,提供公共接口供外部交互。例如,`Person`类封装`name`和`age`,通过`getName()`和`setAge()`方法访问。继承允许子类(如`Dog`)继承父类(如`Animal`)的属性和方法,并可扩展或覆盖。多态使得父类引用可指向子类对象,调用方法时根据实际对象类型执行,如不同动物的`makeSound()`。接口实现多态提供了一种定义行为而不必关心实现的方式。向上转型(子类→父类)安全且默认,而向下转型(父类→子类)需类型检查以避免异常。
7 1
|
6天前
|
安全 Java 开发者
类与对象:Java中的封装、继承与多态
Java面向对象三大特性:封装(隐藏对象细节,增强安全与复用),继承(代码复用与扩展,如Dog继承Animal),多态(统一接口,不同实现,如Playable接口的Piano和Guitar)。通过示例展示了如何在实践中应用这些概念。【6月更文挑战第16天】
16 2
|
5天前
|
Java
揭秘!为何Java多线程中,继承Thread不如实现Runnable?
【6月更文挑战第19天】在Java多线程中,实现`Runnable`比继承`Thread`更佳,因Java单继承限制,`Runnable`可实现接口复用,便于线程池管理,并分离任务与线程,提高灵活性。当需要创建线程或考虑代码复用时,实现`Runnable`是更好的选择。
|
7天前
|
Java
Java编程不再难:一文看懂抽象类与接口的区别和联系!
【6月更文挑战第17天】在Java OOP中,抽象类与接口助你构建复杂应用。以图书管理系统为例,抽象类`Book`作为基类提供共享属性和方法,不直接实例化。接口如`HasChapters`和`HasIssues`定义特殊行为。抽象类支持部分实现,单继承,适合共享行为;接口仅含常量和抽象方法,多实现,强调行为规范。通过继承和实现,实现代码复用和系统扩展性。理解两者异同,是提升Java编程能力的关键。