2021-07-29 Java练习题

题目

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());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PerCheung

觉得有帮助的话就打赏支持一下吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值