【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 的说话方法,传入:  “有你在我就安心.”


相关文章
|
7月前
|
Java Go 开发工具
【Java】(9)抽象类、接口、内部的运用与作用分析,枚举类型的使用
抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接 口、枚举)5种成分。抽象类的构造器不能用于创建实例,主要是用于被其子类调用。抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类abstract static不能同时修饰一个方法。
316 0
|
11月前
|
安全 Java API
Java 抽象类与接口在 Java17 + 开发中的现代应用实践解析
《Java抽象类与接口核心技术解析》 摘要:本文全面剖析Java抽象类与接口的核心概念与技术差异。抽象类通过模板设计实现代码复用,支持具体方法与状态管理;接口则定义行为规范,实现多态支持。文章详细对比了两者在实例化、方法实现、继承机制等方面的区别,并提供了模板方法模式(抽象类)和策略模式(接口)的典型应用示例。特别指出Java8+新特性为接口带来的灵活性提升,包括默认方法和静态方法。最后给出最佳实践建议:优先使用接口定义行为规范,通过抽象类实现代码复用,合理组合两者构建灵活架构。
363 2
|
Java
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
1315 60
|
Java
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
753 15
Java基础(13)抽象类、接口
本文介绍了Java面向对象编程中的抽象类和接口两个核心概念。抽象类不能被实例化,通常用于定义子类的通用方法和属性;接口则是完全抽象的类,允许声明一组方法但不实现它们。文章通过代码示例详细解析了抽象类和接口的定义及实现,并讨论了它们的区别和使用场景。
249 2
|
Java 测试技术 开发者
Java零基础-抽象类详解
【10月更文挑战第17天】Java零基础教学篇,手把手实践教学!
353 2
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
334 3