栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

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

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 

运行结果: 

 (进阶)题目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 

运行结果:

 (进阶)题目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();
		// TODO Auto-generated constructor stub
	}
	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();
		// TODO Auto-generated constructor stub
	}
	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();
		// TODO Auto-generated constructor stub
	}

	public Trunk(double weight, double distance) {
		super(weight, distance);
		// TODO Auto-generated constructor stub
	}
}

//火车类
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();
		// TODO Auto-generated constructor stub
	}

	public Train(double weight, double distance) {
		super(weight, distance);
		// TODO Auto-generated constructor stub
	}
}

//测试类
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();
	}
}

运行结果

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984194.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号