Java练习题-09

1. 建立一个汽车Auto类,包括轮胎个数,汽车颜色,车身重量、速度等成员变量。并通过不同的构造方法创建实例。至少要求:  汽车能够加速,减速,停车。 再定义一个小汽车类Car,继承Auto,并添加空调、CD等成员变量,覆盖加速,减速的方法

public class Auto {
	int tyre;
	String color;
	int weight;
	int speed;
	
	public Auto() {
		
	}

	public Auto(int tyre, String color, int weight, int speed) {
		super();
		this.tyre = tyre;
		this.color = color;
		this.weight = weight;
		this.speed = speed;
	}

	public void SpeedUp() {
		System.out.println("能加速");
	}
	
	public void SpeedDown() {
		System.out.println("能减速");
	}
	
	public void stop() {
		System.out.println("汽车的轮胎:"+tyre);
		System.out.println("汽车的颜色:"+color);
		System.out.println("汽车的重量:"+weight+"t");
		System.out.println("汽车的速度:"+speed+"km/h");
		System.out.println("能停车");
	}
}
public class Car extends Auto{

	@Override
	public void SpeedUp() {
		System.out.println("能吹空调");
	}

	@Override
	public void SpeedDown() {
		System.out.println("能放CD");
	}
}
public class Test {
	public static void main(String[] args) {
		Auto auto = new Auto(4,"黑色",2,90);
		auto.stop();
		auto.SpeedUp();
		auto.SpeedDown();
		
		System.out.println("");
		Car car = new Car();
		car.tyre = 4;
		car.color = "银色";
		car.weight = 2;
		car.speed = 60;
		car.stop();
		car.SpeedUp();
		car.SpeedDown();
	}
}
汽车的轮胎:4
汽车的颜色:黑色
汽车的重量:2t
汽车的速度:90km/h
能停车
能加速
能减速

汽车的轮胎:4
汽车的颜色:银色
汽车的重量:2t
汽车的速度:60km/h
能停车
能吹空调
能放CD

2. 写一个Person类,有编号id,姓名name,职位job。构造方法带三个参数。方法:登陆login、注册register、自我介绍talk

写一个学生Student类继承Person类,方法有:考试test,属性有:学费money

写一个老师Teacher类继承Person类,属性有 工资salary,方法有:工作work

写一个测试类TestPerson,测试学生和老师

学生:姓名-张三  职位-学生  学费-18000

老师:姓名-李四  职位-老师  工资-8000

public class Person {
	int id;
	String name;
	String job;
	
	public Person() {
		
	}
	
	public Person(int id, String name, String job) {
		super();
		this.id = id;
		this.name = name;
		this.job = job;
	}
	
	public void login() {
		System.out.println("登陆");
		
	}
	
	public void register() {
		System.out.println("注册");
	}
	
	public void talk() {
		System.out.println("自我价绍");
	}
}
public class Student extends Person{
	int money;
	public void test() {
		System.out.println("能考试");
	}
	@Override
	public void talk() {
		System.out.println("学生:姓名-"+super.name+"   编号-"+super.id
				+"  职位-"+super.job+"  学费-"+money);
	}
	
}
public class Teacher extends Person{
	int salary;
	public void work() {
		System.out.println("能工作");
	}
	@Override
	public void talk() {
		System.out.println("老师:姓名-"+super.name+"   编号-"+super.id+
				"  职位-"+super.job+"  工资-"+this.salary);
	}

}
public class Test {
	public static void main(String[] args) {
		Student student = new Student();
		student.name = "张三";
		student.job = "学生";
		student.money = 18000;
		student.id = 12;
		student.login();
		student.register();
		student.talk();
		
		System.out.println("");
		Teacher teacher = new Teacher();
		teacher.name = "李四";
		teacher.job = "老师";
		teacher.salary = 8000;
		teacher.id = 30;
		teacher.login();
		teacher.register();
		teacher.talk();
		
	}

}
登陆
注册
学生:姓名-张三   编号-12  职位-学生  学费-18000

登陆
注册
老师:姓名-李四   编号-30  职位-老师  工资-8000

3. 定义一个父类:形状类Shapes,里面有两个方法,分别是求面积和周长。

定义一个子类:矩形Rectangle

定义一个子类:三角形 Triagle

定义一个子类:圆 Circle

定义一个测试类:传入圆的半径4 输出周长和面积

                传入矩形的长和宽4,5 输出周长和面积

                传入三角形三边:3,4,5 输出周长和面积

public class Shapes {
	//求周长
	public void Perimeter(){
		System.out.println("求周长");
	}

	//求面积
	public void area() {
		System.out.println("求面积");
	}
}
public class Circle extends Shapes{
	double r;

	@Override
	public void Perimeter() {
		System.out.println("圆的周长:"+(2*3.14*r));
		
	}

	@Override
	public void area() {
		System.out.println("圆的面积:"+(3.14*r*r));
	}

}
public class Rectangle extends Shapes{
	int chang;
	int kuan;

	@Override
	public void Perimeter() {
		System.out.println("矩形的周长:"+(2*(chang+kuan)));
	}

	@Override
	public void area() {
		System.out.println("矩形的面积:"+(chang*kuan));
	}
	
}
public class Triagle extends Shapes{
	//三角形的三边长
	int a;
	int b;
	int c;
	@Override
	public void Perimeter() {
		System.out.println("三角形的周长:"+(a+b+c));
	}
	@Override
	public void area() {
		int area1 = (int) (a*Math.sqrt(c*c-a/2*a/2))/2;
		System.out.println("三角形的面积:"+area1);
	}

}
public class Test {
	public static void main(String[] args) {
		Circle circle = new Circle();
		circle.r = 4;
		circle.Perimeter();
		circle.area();
		
		System.out.println("");
		Rectangle rectangle = new Rectangle();
		rectangle.chang = 4;
		rectangle.kuan = 5;
		rectangle.Perimeter();
		rectangle.area();
		
		System.out.println("");
		Triagle triagle = new Triagle();
		triagle.a = 5;
		triagle.b = 5;
		triagle.c = 3;
		triagle.Perimeter();
		triagle.area();
	}

}
圆的周长:25.12
圆的面积:50.24

矩形的周长:18
矩形的面积:20

三角形的周长:13
三角形的面积:5

4. (拔高)综合应用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 color; //猫的颜色
	
	//提供私有属性的访问通道 getter/setter方法
	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 getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	
	//打印猫咪信息的方法
	public void message() {
		System.out.println("猫的名字:"+name);
		System.out.println("猫的年龄:"+age);
		System.out.println("猫的颜色:"+color);
		
	}
}
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入猫猫的名字:");
		String name = sc.next();
		
		if(name.equals("小花")) {
		Cat mimi = new Cat();
		mimi.setName("小花");
		mimi.setAge(3);
		mimi.setColor("白色");
		mimi.message();
		}else if(name.equals("小白")) {
		Cat mumu = new Cat();
		mumu.setName("小白");
		mumu.setAge(3);
		mumu.setColor("花色");
		mumu.message();
		}else {
			System.out.println("张老太没有这只猫");
		}
	}
}
请输入猫猫的名字:小花
猫的名字:小花
猫的年龄:3
猫的颜色:白色

5. (拔高)综合应用2

案例题目描述:
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 Transport {
	private double weight;
	private double distance;
	
	public Transport() {
		
	}

	public Transport(double weight, double distance) {
		this.weight = weight;
		this.distance = distance;
	}
	
	
	
	public double getWeight() {
		return weight;
	}

	public void setWeight(double weight) {
		this.weight = weight;
	}

	public double getDistance() {
		return distance;
	}

	public void setDistance(double distance) {
		this.distance = distance;
	}

	public double money() {
		System.out.println("计算运费");
		return 0 ;
	}

}
public class Truck extends Transport{
	
	public double money() {
		if(super.getDistance()>1000 || super.getWeight()>60) {
			System.out.println("拒载");
			return -1;
		}else {
			double pay = super.getWeight()*super.getDistance()*120;
			System.out.println("卡车的收费为:"+pay);
			return pay;
		
		}
		
	}

}
public class train extends Transport{

	@Override
	public double money() {
		if(super.getDistance()<=900) {
			double pay = super.getWeight()*super.getDistance()*250;
			System.out.println("火车的收费为:"+pay);
			return pay;

		}else {
			double pay = super.getWeight()*super.getDistance()*300;
			System.out.println("火车的收费为:"+pay);
			return pay;
		}
		
		
	}

	
public class Test {
	public static void main(String[] args) {
		Truck truck = new Truck();
		truck.setDistance(500);
		truck.setWeight(10);
		truck.money();
		
		System.out.println("");
		train train1 = new train();
		train1.setDistance(500);
		train1.setWeight(10);
		train1.money();
	}

}
卡车的收费为:600000.0

火车的收费为:1250000.0

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值