首页 > 分享 > JAVA day07:代码练习题(继承)

JAVA day07:代码练习题(继承)

题目1:继承的应用

定义宠物类( Pet ),猫类(Cat)和狗类(Dog)
1、宠物都有属性姓名(name)和年龄(age)
2、宠物都有吃(eat)、喝(drink)、叫(shout)的方法
3、猫有爬树( climbTree )的方法
4、狗有警戒( police)的方法

public class Pet {

public String name;

public int age;

public void eat(){

System.out.println(name+"会吃");

}

public void drink(){

System.out.println(name+"会喝");

}

public void shout(){

System.out.println(name+"会叫");

}

}

public class Cat extends Pet{

public void climbTree(){

System.out.println(super.name+"会爬树");

}

}

public class Dog extends Pet{

public void police(){

System.out.println(super.name+"会警戒");

}

}

题目2:方法重写的应用

定义银行卡和信用卡类
银行卡类
>有余额属性和存钱、取钱方法

信用卡类
>继承银行卡类
>有透支额度属性(初始1000)
>重写取款方法
测试类中分别使用两种卡完成存取款操作。

public class YinHangKa {

public double yuE=500;

public void add(double cun){

yuE+=cun;

System.out.println("存款成功,余额为:"+yuE);

}

public void draw(double qu){

if(yuE>=qu){

yuE-=qu;

System.out.println("取款成功,余额为:"+yuE);

}else{

System.out.println("余额不足,取款失败");

}

}

}

public class XinYongKa extends YinHangKa{

public double touZiE=1000;

@Override

public void draw(double qu) {

if((super.yuE+touZiE)>=qu&&super.yuE>=qu){

super.yuE-=qu;

System.out.println("取款成功,余额为:"+super.yuE+"t透支额为:"+touZiE);

}else if((super.yuE+touZiE)>=qu&&super.yuE<qu){

touZiE=super.yuE+touZiE-qu;

super.yuE=0;

System.out.println("取款成功,余额为:"+super.yuE+"t透支额为:"+touZiE);

}else{

System.out.println("余额不足,取款失败");

}

}

}

public class TestKa {

public static void main(String[] args) {

YinHangKa yhk=new YinHangKa();

XinYongKa xyk=new XinYongKa();

System.out.println("初始余额为:"+yhk.yuE);

System.out.println("用银行卡存600");

yhk.add(600);

System.out.println("用银行卡取700");

yhk.draw(700);

System.out.println("用银行卡取1000");

yhk.draw(1000);

System.out.println("用信用行卡存100");

xyk.add(100);

System.out.println("用信用卡取200");

xyk.draw(200);

System.out.println("用信用卡取1000");

xyk.draw(1000);

}

}

运行结果: 

 (进阶)题目3:定义银行卡和信用卡类,完成下列功能

1、完成银行卡的存取款方法
  银行卡有余额,卡号,户主等属性
  有存款和取款的方法(取款时候余额不足要有提示)
2、完成信用卡的取款方法
  信用卡额外有透支额度属性
  信用卡重写取款方法(取款时候余额不足要有提示)
3、写测试案例,分别测试银行卡和信用卡的存取款功能(存取款后显示余额)

public class YinHangKa {

public double yuE;

public String kaHao;

public String huZhu;

public void add(double cun){

yuE+=cun;

System.out.println("卡号为:"+kaHao+"t户主为:"+huZhu);

System.out.println("存款成功,余额为:"+yuE);

}

public void draw(double qu){

if(yuE>=qu){

yuE-=qu;

System.out.println("卡号为:"+kaHao+"t户主为:"+huZhu);

System.out.println("取款成功,余额为:"+yuE);

}else{

System.out.println("余额不足,取款失败");

}

}

}

public class XinYongKa extends YinHangKa{

public double touZiE=1000;

@Override

public void draw(double qu) {

if((super.yuE+touZiE)>=qu&&super.yuE>=qu){

super.yuE-=qu;

System.out.println("卡号为:"+super.kaHao+"t户主为:"+super.huZhu);

System.out.println("取款成功,余额为:"+super.yuE+"t透支额为:"+touZiE);

}else if((super.yuE+touZiE)>=qu&&super.yuE<qu){

touZiE=super.yuE+touZiE-qu;

super.yuE=0;

System.out.println("卡号为:"+super.kaHao+"t户主为:"+super.huZhu);

System.out.println("取款成功,余额为:"+super.yuE+"t透支额为:"+touZiE);

}else{

System.out.println("余额不足,取款失败");

}

}

}

public class TestKa {

public static void main(String[] args) {

YinHangKa yhk=new YinHangKa();

yhk.yuE=500;

yhk.kaHao="12345678";

yhk.huZhu="淳淳";

XinYongKa xyk=new XinYongKa();

xyk.yuE=1000;

xyk.kaHao="87654321";

xyk.huZhu="刘刘";

System.out.println("初始银行卡余额为:"+yhk.yuE);

System.out.println("用银行卡存600");

yhk.add(600);

System.out.println("用银行卡取700");

yhk.draw(700);

System.out.println("用银行卡取1000");

yhk.draw(1000);

System.out.println("初始银行卡余额为:"+yhk.yuE);

System.out.println("用信用行卡存100");

xyk.add(100);

System.out.println("用信用卡取200");

xyk.draw(200);

System.out.println("用信用卡取1000");

xyk.draw(1000);

}

}

运行结果:

 (进阶)题目4:通过继承实现员工工资核算打印功能

1、有员工类(父类),普通员工类(员工类的子类)和部门经理类(员工类的子类)
  普通员工工资=单日工资*天数*等级(1);部门经理工资=1000+单日工资*天数*等级(1.2)。
2、员工类的属性和方法
  属性:单日工资,工作天数,工资等级静态常量
  方法:打印工资方法
3、子类按照本类特点重写打印工资方法
4、写测试类,输出各类的工资(同时代码验证重写的规则)

public class Staff {

public double dailyWage;

public int workingDays;

public double wageBracket;

public void printWages(){

double wage=dailyWage*workingDays*wageBracket;

System.out.println("员工工资为:"+wage);

}

}

public class GeneralStaff extends Staff{

@Override

public void printWages() {

super.wageBracket=1;

super.printWages();

}

}

public class Manager extends Staff{

@Override

public void printWages() {

wageBracket=1.2;

double wage=1000+dailyWage*workingDays*wageBracket;

System.out.println("项目经理工资为:"+wage);

}

}

public class Test {

public static void main(String[] args) {

GeneralStaff g=new GeneralStaff();

Manager m=new Manager();

g.dailyWage=100;

m.dailyWage=500;

g.workingDays=10;

m.workingDays=20;

g.printWages();

m.printWages();

}

}

运行结果:

 (拔高)题目5:综合应用1

1. 张老太养了两只猫:一只叫小花,今年3岁白色。另一只叫小白,今年3岁花色。请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字、年龄、颜色。如果输入的小猫名错误,则显示:张老太没有这只猫。
      实现思路:
1) 创建猫类,定义三个变量:姓名 年龄 颜色,变量均私有
2) 给这3个变量提供set和get方法
3) 定义打印信息的方法
4) 创建测试类
5) 创建2只猫,用set方式赋值,信息和题意一致
6) 创建键盘录入对象,录入猫的姓名
7) 判断键盘录入的姓名和这2只猫的姓名是否一致,如果一致就打印这只猫的信息,
      如果不一致提示没有这只猫,请重新输入
1. 评分标准:
(1) 正确创建猫类 (10分)
(2) 正确定义私有属性和方法(10分)
(3) 正确定义打印方法(10分)
(4) 创建测试类,创建两个对象(10分)
(5) 正确输入猫的信息(10分)
(6) 判断两只猫是否是同一个猫(10分)
(7) 打印输出信息(10分)
(8) 正确调用方法,输出信息(10分)
(9) 添加注释(5分)

public class Cat {

private String name;

private int age;

private String colour;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getColour() {

return colour;

}

public void setColour(String colour) {

this.colour = colour;

}

public Cat() {

super();

}

public Cat(String name, int age, String colour) {

super();

this.name = name;

this.age = age;

this.colour = colour;

}

public void print(){

System.out.println("姓名:"+name+"t年龄:"+age+"t颜色:"+colour);

}

}

public class TestCat {

public static void main(String[] args) {

Cat cat1=new Cat();

cat1.setName("小花");

cat1.setAge(3);

cat1.setColour("花色");

Cat cat2=new Cat();

cat2.setName("小白");

cat2.setAge(3);

cat2.setColour("白色");

Scanner sc=new Scanner(System.in);

while(true){

System.out.println("请输入猫的姓名:");

String name=sc.next();

if(cat1.getName().equals(name)){

cat1.print();

break;

}else if(cat2.getName().equals(name)){

cat2.print();

break;

}else{

System.out.println("没有这只猫,请重新输入");

}

}

}

}

 运行结果:

 (拔高)题目6:综合应用2

1. 按要求完成以下题目:
案例效果图:

案例题目描述:
A. 编写两个类继承运输工具类:卡车类、火车类
要求:
(1)添加两个变量,并进行封装。
(2)添加无参构造方法和有参构造方法,并通过有参构造为重量和距离两个变量赋值
(3) 重写父类计算运费的方法如下:
a. 卡车:运费=重量x距离x120,当距离大于1000(km)或者重量大于60(t)的时候拒载,拒载时间方法返回-1。
b. 火车:当距离在900(km)内(包含900)时,运费=重量x距离X250,大于900(km)时,运费=重量x距离x300。
B. 编写测试类,创建卡车和火车类对象,调用计算运费方法
1. 评分标准:
(1) 正确定义工具类 (10分)
(2) 正确定义火车类(10分)
(3) 正确定义卡车类(10分)
(4) 卡车重写父类方法(10分)
(5) 火车重写父类方法(10分)
(6) 正确定义各类的方法(10分)
(7) 创建测试类,创建对象调用方法(10分)
(8) 输出所有变量信息(10分)
(9) 添加注释(5分)

public class Car {

public double weight;

public double distance;

public Car(double weight, double distance) {

super();

this.weight = weight;

this.distance = distance;

}

public Car() {

super();

}

public void freight(){

double freight=0;

System.out.println("收费为:"+freight);

}

}

public class Trunk extends Car{

@Override

public void freight() {

double freight=0;

if(weight<=60&&distance<=1000){

freight=weight*distance*250;

System.out.println("卡车的收运费为:"+freight);

}else if(weight>60){

System.out.println("超重了,卡车拒载");

}else if(distance>1000){

System.out.println("距离太远,卡车拒载");

}

}

public Trunk() {

super();

}

public Trunk(double weight, double distance) {

super(weight, distance);

}

}

public class Train extends Car{

@Override

public void freight() {

double freight=0;

if(distance<=900){

freight=weight*distance*250;

}else{

freight=weight*distance*300;

}

System.out.println("火车的收费为:"+freight);

}

public Train() {

super();

}

public Train(double weight, double distance) {

super(weight, distance);

}

}

public class Test {

public static void main(String[] args) {

Trunk caChe1=new Trunk(30,500);

Trunk caChe2=new Trunk(70,100);

Train huoChe1=new Train(30,500);

Train huoChe2=new Train(70,100);

caChe1.freight();

caChe2.freight();

huoChe1.freight();

huoChe2.freight();

}

}

运行结果

相关知识

java用继承编写宠物乐园
java继承
java版本电子宠物游戏代码
java练习题
学会继承、多态、封装(1)——Java实现宠物店(领养宠物)
Java入门
python 练习题
宠物游戏系统 java
python:列表的练习题
JAVA面向对象编程——学生喂养三种宠物:猫、狗和鸟

网址: JAVA day07:代码练习题(继承) https://m.mcbbbk.com/newsview239423.html

所属分类:萌宠日常
上一篇: 训练狗狗的十大注意事项
下一篇: 厦门宠物开店1v1商业私教培训班