题目
1、中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按
照国务院的指示进行安全生产。请编写一个java应用程序描述上述的体制现象。
要求如下:
(1)该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中
有个“坚持党的领导”方法:void partyLeader()
(2)该应用程序中有一个“国务院”抽象类:StateCouncil,该抽象类中有个“安
全生产”的抽象方法:abstract void safetyInProduction()
(3)该应用程序中有一个“省政府”类:Province,该类继承StateCouncil抽象
类并且实现CentralPartyCommittee接口;在实现partyLeader()方法时输出“我们
各省人民一定坚持党的领导!”;在重写safetyInProduction()方法时输出“我们各
省人民一定按照国务院的指示进行安全生产!”。
(4)该应用程序中有一个主类E,在主类E的main方法中创建Province类的对
象,来测试Province类的功能。
2、利用接口做参数,写个计算器,能完成加减乘除运算。
(1)定义一个接口Compute含有一个方法int computer(int n, int m)。
(2)设计四个类分别实现此接口,完成加减乘除运算。
(3)设计一个类UseCompute,类中含有方法:public void useCom(Compute com, int one, int two),
此方法能够用传递过来的对象调用computer方法完成运算,并输出运算的结果。
(4)设计一个主类Test,调用UseCompute中的方法useCom来完成加减乘除运算。
3、(1)定义接口A,里面包含值为3.14的常量PI和抽象方法double area()。
(2)定义接口B,里面包含抽象方法void setColor(String c)。
(3)定义接口C,该接口继承了接口A和B,里面包含抽象方法void volume()。
(4)定义圆柱体类Cylinder实现接口C,该类中包含三个成员变量:底圆半径radius、
圆柱体的高height、颜色color。
(5)创建主类来测试类Cylinder。
4、定义一个抽象的"Role"类,有姓名,年龄,性别等成员变量
1)要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有),
再通过GetXXX()和SetXXX()方法对各变量进行读写。
具有一个抽象的play()方法,
该方法不返回任何值,同时至少定义两个构造方法。Role类中要体现出this的几种用法。
2)从Role类派生出一个"Employee"类,该类具有Role类的所有成员(构造方法除外),
并扩展salary成员变量,
同时增加一个静态成员变量“职工编号(ID)”。
同样要有至少两个构造方法,要体现出this和super的几种用法,
还要求覆盖play()方法,
并提供一个final sing()方法。
3)“Manager"类继承"Employee"类,有一个final成员变量"vehicle”
在main()方法中制造Manager和Employee对象,并测试这些对象的方法。
5、定义一个包含计算面积方法area()和计算体积抽象方法volume()的几何图形接口Shape。
然后再定义实现该接口的正方体、长方体、圆柱体的类。
最后设计一个主程序,利用多态特性计算正方体、长方体、圆柱体的面积与体积。
6、创建一个Vehicle类并将它声明为抽象类。在Vehicle类中声明一个NoOfWheels方法,
- 使它返回一个字符串值。创建两个类Car和Motorbike从Vehicle类继承,
- 并在这两个类中实现NoOfWheels方法。在Car类中,应当显示“四轮车”信息;
- 而在Motorbike类中,应当显示“双轮车”信息。创建另一个带main方法的类,
- 在该类中创建Car和Motorbike的实例,并在控制台中显示消息。
com.practice
china
CentralPartyCommittee.java
package com.practice.china;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 19:40
*
* 该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中
*
* 有个“坚持党的领导”方法:void partyLeader()
*/
public interface CentralPartyCommittee {
void partyLeader();
}
StateCouncil.java
package com.practice.china;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 19:41
* 该应用程序中有一个“国务院”抽象类:StateCouncil,该抽象类中有个“安
*
* 全生产”的抽象方法:abstract void safetyInProduction()
*/
public abstract class StateCouncil {
abstract void safetyInProduction();
}
Province.java
package com.practice.china;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 19:42
*
* 该应用程序中有一个“省政府”类:Province,该类继承StateCouncil抽象
*
* 类并且实现CentralPartyCommittee接口;在实现partyLeader()方法时输出“我们
*
* 各省人民一定坚持党的领导!”;在重写safetyInProduction()方法时输出“我们各
*
* 省人民一定按照国务院的指示进行安全生产!”。
*/
public class Province extends StateCouncil implements CentralPartyCommittee{
@Override
public void partyLeader() {
System.out.println("我们各省人民一定坚持党的领导!");
}
@Override
void safetyInProduction() {
System.out.println("我们各省人民一定按照国务院的指示进行安全生产!");
}
}
E.java
package com.practice.china;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 19:44
*
* 主类E的main方法中创建Province类的对,来测试Province类的功能。
*/
public class E {
public static void main(String[] args) {
new Province().partyLeader();
new Province().safetyInProduction();
}
}
Calculator
Compute.java
package com.practice.Calculator;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 19:46
*
* 定义一个接口Compute含有一个方法int computer(int n, int m)
*/
public interface Compute {
int computer(int n, int m);
}
add.java
package com.practice.Calculator;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 19:51
*/
public class add implements Compute{
@Override
public int computer(int n, int m) {
return n+m;
}
}
division.java
package com.practice.Calculator;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 19:53
*/
public class division implements Compute{
@Override
public int computer(int n, int m) {
return n/m;
}
}
reduce.java
package com.practice.Calculator;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 19:52
*/
public class reduce implements Compute{
@Override
public int computer(int n, int m) {
return n-m;
}
}
take.java
package com.practice.Calculator;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 19:52
*/
public class take implements Compute{
@Override
public int computer(int n, int m) {
return n*m;
}
}
UseCompute.java
package com.practice.Calculator;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 19:54
*
* 类UseCompute,
* 类中含有方法:public void useCom(Compute com, int one, int two),
* 此方法能够用传递过来的对象调用computer方法完成运算,并输出运算的结果。
*/
public class UseCompute {
public int useCom(Compute com, int one, int two){
return com.computer(one,two);
}
}
Test.java
package com.practice.Calculator;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 19:55
*
* 主类Test,调用UseCompute中的方法useCom来完成加减乘除运算。
*/
public class Test {
public static void main(String[] args) {
System.out.println(new UseCompute().useCom(new add(),1,2));
System.out.println(new UseCompute().useCom(new reduce(),1,2));
System.out.println(new UseCompute().useCom(new take(),1,2));
System.out.println(new UseCompute().useCom(new division(),1,1));
}
}
Cylinder
A.java
package com.practice.Cylinder;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 20:16
*
* 接口A,里面包含值为3.14的常量PI和抽象方法double area()
*/
public interface A {
double PI=3.14;
double area();
}
B.java
package com.practice.Cylinder;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 20:16
*
* 接口B,里面包含抽象方法void setColor(String c)
*/
public interface B {
String setColor();
}
C.java
package com.practice.Cylinder;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 20:16
*
* 接口C,该接口继承了接口A和B,里面包含抽象方法void volume()
*/
public interface C extends A, B {
double volume();
}
E.java
package com.practice.Cylinder;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 20:25
*/
public class E {
public static void main(String[] args) {
System.out.println(new Cylinder());
}
}
Cylinder.java
package com.practice.Cylinder;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 20:18
*
* 圆柱体类Cylinder实现接口C,该类中包含三个成员变量:
* 底圆半径radius、
* 圆柱体的高height、
* 颜色color
*/
public class Cylinder implements C{
private double radius = 5;
private double height = 7;
private String color = "红色";
@Override
public double area() {
return radius*radius*PI*2+radius*PI*2*height;
}
@Override
public String setColor() {
return color;
}
@Override
public double volume() {
return radius*radius*PI*height;
}
@Override
public String toString() {
return "圆柱体:" +"\n"+
"圆柱体表面积为" + area() +"\n"+
"圆柱体体积为" + volume() +"\n"+
"圆柱体颜色为" + setColor();
}
}
Role
Role.java
package com.practice.Role;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 20:33
* <p>
* 定义一个抽象的"Role"类,有姓名,年龄,性别等成员变量
* <p>
* 1)要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有),
* 再通过GetXXX()和SetXXX()方法对各变量进行读写。
* 具有一个抽象的play()方法,
* 该方法不返回任何值,同时至少定义两个构造方法。Role类中要体现出this的几种用法
*/
public abstract class Role {
private String name;
private String sex;
private int age;
public abstract void play();
public Role(){}
public Role(String name){
this.name = name;
}
public Role(int age,String sex){
this("lisi");
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Employee.java
package com.practice.Role;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 21:06
*
* 从Role类派生出一个"Employee"类,该类具有Role类的所有成员(构造方法除外),
* 并扩展salary成员变量,
* 同时增加一个静态成员变量“职工编号(ID)”。
* 同样要有至少两个构造方法,要体现出this和super的几种用法,
* 还要求覆盖play()方法,
* 并提供一个final sing()方法。
*/
public class Employee extends Role{
private double salary;
private static long ID;
public Employee(){}
public Employee(long ID){
super.setName("lisi");
this.setName("张三");
}
@Override
public void play() {
System.out.println("嘤嘤怪");
}
public final void sing(){
System.out.println("嘤嘤嘤");
}
}
Manager.java
package com.practice.Role;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 21:41
*
* "Manager"类继承"Employee"类,有一个final成员变量"vehicle"
* 在main()方法中制造Manager和Employee对象,并测试这些对象的方法。
*/
public class Manager extends Employee{
final String vehicle = "奔驰";
public static void main(String[] args) {
System.out.println(new Manager().vehicle);
new Employee().sing();
new Employee().play();
}
}
cube
Shape.java
package com.practice.cube;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 21:46
*
* 定义一个包含计算面积方法area()和计算体积抽象方法volume()的几何图形接口Shape
*/
public interface Shape {
double PI = java.lang.Math.PI;
double area();
double volume();
}
Cube.java
package com.practice.cube;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 21:48
*/
public class Cube implements Shape{
double SideLength = 5;
@Override
public double area() {
return SideLength*SideLength*6;
}
@Override
public double volume() {
return SideLength*SideLength*SideLength;
}
}
cuboid.java
package com.practice.cube;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 21:48
*/
public class cuboid implements Shape{
int length = 8;
int width = 3;
int height = 5;
@Override
public double area() {
return 2*(length*width+width*height+height*length);
}
@Override
public double volume() {
return length*width*height;
}
}
Cylinder.java
package com.practice.cube;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 21:49
*/
public class Cylinder implements Shape{
int radius = 5;
int height = 5;
@Override
public double area() {
return radius*radius*PI*2+radius*PI*2*height;
}
@Override
public double volume() {
return radius*radius*PI*height;
}
}
Calculation.java
package com.practice.cube;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 21:50
*/
public class Calculation {
public static void show(Shape shape) {
System.out.println("表面积为"+shape.area());
System.out.println("体积为"+shape.volume());
}
public static void main(String[] args) {
System.out.println("正方体:");
show(new Cube());
System.out.println("圆柱体:");
show(new Cylinder());
System.out.println("长方体:");
show(new cuboid());
}
}
Vehicle
Vehicle.java
package com.practice.Vehicle;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 22:05
*
* 创建一个Vehicle类并将它声明为抽象类。在Vehicle类中声明一个NoOfWheels方法,
* 使它返回一个字符串值。
*/
public abstract class Vehicle {
public abstract String NoOfWheels();
}
Car.java
package com.practice.Vehicle;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 22:07
*
* 在Car类中,应当显示“四轮车”信息
*/
public class Car extends Vehicle{
@Override
public String NoOfWheels() {
return "四轮车";
}
}
Motorbike.java
package com.practice.Vehicle;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 22:09
*/
public class Motorbike extends Vehicle{
@Override
public String NoOfWheels() {
return "双轮车";
}
}
Test.java
package com.practice.Vehicle;
/**
* @author Peter Cheung
* @user PerCheung
* @date 2021/7/29 22:14
*/
public class Test {
public static void show(Vehicle vehicle) {
System.out.println(vehicle.NoOfWheels());
}
public static void main(String[] args) {
show(new Car());
show(new Motorbike());
}
}