2021-7-28 Java练习题

题目

1、编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类E。
要求:

(1) Monkey类中有个构造方法:Monkey (String s),并且有个public void speak()方法,在speak方法中输出“咿咿呀呀…”的信息。

(2)People类是Monkey类的子类,在People类中重写方法speak(),在speak方法中输出“小样的,不错嘛!会说话了!”的信息。

(3)在People类中新增方法void think(),在think方法中输出“别说话!认真思考!”的信息。

(4)在主类E的main方法中创建Monkey与People类的对象类测试这2个类的功能。

2、编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight。
小车类Car是Vehicle的子类,其中包含的属性有载人数loader。
卡车类Truck是Car类的子类,其中包含的属性有载重量payload。
每个类都有构造方法和输出相关数据的方法。
最后,写一个测试类来测试这些类的功能。

3、按要求编写一个Java应用程序:

(1)定义一个形状类Shape,由求周长和面积的方法。
(2)定义一个圆形类Circle,继承Shape。
(3)定义一个矩形类Rect,继承Shape。
(4)定义一个正方形类Square,继承Rect。
(5)测试。

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

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

(3)写一个老师Teacher类继承Person类,
属性有 工资salary
方法有:工作work
(4)写一个测试类TestPerson,测试学生和老师
学生:姓名-张三 职位-学生 学费-18000
老师:姓名-李四 职位-老师 工资-8000

5、(1)设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的,成员变量x和y,获取和设置x和y值的public方法。

(2)设计一个表示二维平面上圆的类Circle,它继承自类Point,还包含有表示圆半径的protected类型的成员变量r、获取和设置r值的public方法、计算圆面积的public方法。

(3)设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的protected类型的成员变量h、获取和设置h值的public方法、计算圆柱体体积的public方法。

(4)建立Cylinder对象,输出其轴心位置坐标、半径、面积、高及其体积的值。

6、题目:

某公司的雇员分为以下若干类:

Employee:这是所有员工总的父类,
属性:员工的姓名,员工的生日月份。

方法:double getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。

SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪。
HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数。

SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率。

BasedPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,
工资由底薪加上销售提成部分。
属性:底薪。

每个不同的员工类的重写父类的计算工资的方法 ,获取到正确的工资。

7、定义一个台灯类Lamp,有一个灯泡属性,还有一个开灯的方法。
灯泡分为红灯泡和绿灯泡,都有发光的方法。
要求:在不修改台灯代码的前提下,更换灯泡发出不同的光。

com.practice.A

E.java

package com.practice.A;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 17:41
 *
 * 主类E的main方法中创建Monkey与People类的对象类测试这2个类的功能。
 */
public class E {
    public static void main(String[] args) {
        Monkey monkey = new Monkey("猴子");
        People People = new People("人");

        monkey.speak();
        People.speak();
        People.think();
    }
}

Monkey.java

package com.practice.A;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 17:41
 *
 * Monkey类中有个构造方法:Monkey (String s),
 * 并且有个public void speak()方法,
 * 在speak方法中输出“咿咿呀呀......”的信息。
 */
public class Monkey {
    public Monkey(String s){}

    public void speak(){
        System.out.println("咿咿呀呀......");
    }
}

People.java

package com.practice.A;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 17:41
 *
 * People类是Monkey类的子类,
 * 在People类中重写方法speak(),
 * 在speak方法中输出“小样的,不错嘛!会说话了!”的信息。
 */
public class People extends Monkey{
    public People(String s) {
        super(s);
    }

    public void speak(){
        System.out.println("小样的,不错嘛!会说话了!");
    }
    /**
     * 在People类中新增方法void think(),
     * 在think方法中输出“别说话!认真思考!”的信息。
     */
    public void think(){
        System.out.println("别说话!认真思考!");
    }
}

com.practice.B

Car.java

package com.practice.B;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 18:42
 *
 * Car是Vehicle的子类,其中包含的属性有载人数loader
 */
public class Car extends Vehicle{
    private int loader;

    public int getLoader() {
        return loader;
    }

    public void setLoader(int loader) {
        this.loader = loader;
    }

    public Car(){}

    public void run() {
        System.out.println("一路向北");
    }
}

Truck.java

package com.practice.B;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 18:42
 *
 * 卡车类Truck是Car类的子类,其中包含的属性有载重量payload
 */
public class Truck extends Car{
    private double payload;

    public double getPayload() {
        return payload;
    }

    public void setPayload(double payload) {
        this.payload = payload;
    }

    public Truck() {

    }

    public void run(){
        System.out.println("嗡嗡");
    }
}

Vehicle.java

package com.practice.B;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 18:42
 *
 * 汽车类Vehicle,包含的属性有车轮个数wheels和车重weight
 */
public class Vehicle {
    private int wheels;
    private double weight;

    public int getWheels() {
        return wheels;
    }

    public void setWheels(int wheels) {
        this.wheels = wheels;
    }

    public double getWeight() {
        return weight;
    }

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

    public Vehicle(){}

    public void run() {
        System.out.println("嘟嘟!");
    }
}

TestCar.java

package com.practice.B;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 18:44
 */
public class TestCar {
    public static void main(String[] args) {
        Vehicle vehicle = new Vehicle();
        Car car = new Car();
        Truck truck = new Truck();

        vehicle.run();
        car.run();
        truck.run();
    }
}

com.practice.C

Circle.java

package com.practice.C;
import static java.lang.Math.PI;
/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 19:13
 */
public class Circle extends Shape{
    private int r = 5;

    public double perimeter() {
        return 2*r*PI;
    }

    public double area() {
        return r*r*PI;
    }
}

Rect.java

package com.practice.C;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 19:13
 */
public class Rect extends Shape{
    private double length=7;
    private double width=3;

    public double perimeter(){
        return length+width+length+width;
    }

    public double area() {
        return length*width;
    }
}

Shape.java

package com.practice.C;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 19:12
 *
 * 形状类Shape,求周长和面积
 */
public class Shape {
    public Shape(){}

    public double perimeter() {
        return 0;
    }

    public double area() {
        return 0;
    }
}

Square.java

package com.practice.C;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 19:13
 */
public class Square extends Rect{
    private double Side=5;

    public double perimeter(){
        return Side*4;
    }
    public double area() {
        return Side*Side;
    }
}

Test.java

package com.practice.C;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 19:13
 */
public class Test {
    public static void main(String[] args) {
        Circle circle = new Circle();
        Rect rect = new Rect();
        Square square = new Square();

        System.out.println("圆周长:"+circle.perimeter());
        System.out.println("圆面积:"+circle.area());
        System.out.println("矩形周长:"+rect.perimeter());
        System.out.println("矩形面积:"+rect.area());
        System.out.println("正方形周长:"+square.perimeter());
        System.out.println("正方形面积:"+square.area());
    }
}

com.practice.D

Person.java

package com.practice.D;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 19:41
 *
 * Person类,有编号id,姓名name,职位job。
 * 构造方法带三个参数。
 * 方法:
 * 登陆login
 * 注册register
 * 自我介绍talk
 */
public class Person {
    private int id;
    private String name;
    private String job;

    public void login(){}
    public void register(){}
    public void talk(){}

    public Person(){}

    public Person(int id, String name, String job) {
        this.id = id;
        this.name = name;
        this.job = job;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }
}

Student.java

package com.practice.D;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 19:44
 *
 * 学生Student类继承Person类,方法有:考试test
 * 属性有:学费money
 */
public class Student extends Person{
    public Student(){
        this.setName("张三");
        this.setJob("学生");
        this.money=18000;
    }

    private double money;

    public void test() {}

    @Override
    public String toString() {
        return "学生:"
                +"姓名-" + this.getName() + " "
                +"职位-" + this.getJob() +" "
                +"学费-" + money;
    }
}

Teacher.java

package com.practice.D;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 19:45
 * <p>
 * 老师Teacher类继承Person类,
 * 属性有 工资salary
 * 方法有:工作work
 */
public class Teacher extends Person {
    private double salary;

    public Teacher() {
        this.setName("李四");
        this.setJob("老师");
        this.salary = 8000;
    }

    public void work() {
    }

    @Override
    public String toString() {
        return "老师:"
                +"姓名-" + this.getName() + " "
                +"职位-" + this.getJob() +" "
                +"工资-" + salary;
    }
}

TestPerson.java

package com.practice.D;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 19:46
 */
public class TestPerson {
    public static void main(String[] args) {
        Student student = new Student();
        Teacher teacher = new Teacher();
        System.out.println(student);
        System.out.println(teacher);
    }
}

com.practice.E

Circle.java

package com.practice.E;

import static java.lang.Math.PI;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 20:01
 *
 * 表示二维平面上圆的类Circle,
 * 它继承自类Point,
 * 还包含有表示圆半径的protected类型的成员变量r、
 * 获取和设置r值的public方法、计算圆面积的public方法
 */
public class Circle extends Point{
    public double getR() {
        return r;
    }

    public void setR(int r) {
        this.r = r;
    }

    protected int r=5;

    public double area() {
        return r*r*PI;
    }
}

Cylinder.java

package com.practice.E;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 20:02
 *
 * 表示圆柱体的类Cylinder,
 * 它继承自类Circle,
 * 还包含有表示圆柱体高的protected类型的成员变量h、获取和设置h值的public方法、
 * 计算圆柱体体积的public方法
 */
public class Cylinder extends Circle{
    protected double h=20;

    public double getH() {
        return h;
    }

    public void setH(double h) {
        this.h = h;
    }

    public double volume(){
        return h*super.area();
    }
}

Point.java

package com.practice.E;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 20:00
 *
 * 类Point,
 * 包含有表示坐标位置的protected类型的成员变量x和y,
 * 获取和设置x和y值的public方法
 */
public class Point {
    protected int x=2;
    protected int y=3;

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }
}

Test.java

package com.practice.E;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 20:03
 *
 * 建立Cylinder对象,输出其轴心位置坐标、半径、面积、高及其体积的值
 */
public class Test {
    public static void main(String[] args) {
        Cylinder cylinder = new Cylinder();
        System.out.println("圆柱体积:"+cylinder.volume());
    }
}

com.practice.F

BasedPlusSalesEmployee.java

package com.practice.F;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 20:31
 *
 * BasedPlusSalesEmployee:
 * SalesEmployee的子类,有固定底薪的销售人员,
 * 工资由底薪加上销售提成部分。
 * 属性:底薪。
 */
public class BasedPlusSalesEmployee extends SalesEmployee{
    private double salary=10000;

    public double getSalary(int month){
        if(month==super.getBirthMonth()){
            return super.getMonthlySales()*super.getCommissionRate()+salary+100;
        }
        return super.getMonthlySales()*super.getCommissionRate()+salary;
    }

    public BasedPlusSalesEmployee(){}

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}

Employee.java

package com.practice.F;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 20:12
 * <p>
 * 是所有员工总的父类,
 * 属性:员工的姓名,员工的生日月份。
 * <p>
 * 方法:double  getSalary(int month)
 * 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
 */
public class Employee {
    private String name;
    private int birthMonth = 9;

    public Employee() {
    }

    public double getSalary(int month) {

        return 0;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getBirthMonth() {
        return birthMonth;
    }

    public void setBirthMonth(int birthMonth) {
        this.birthMonth = birthMonth;
    }
}

HourlyEmployee.java

package com.practice.F;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 20:21
 *
 * HourlyEmployee:
 * Employee的子类,按小时拿工资的员工,
 * 每月工作超出160小时的部分按照1.5倍工资发放。
 * 属性:每小时的工资、每月工作的小时数。
 */
public class HourlyEmployee extends Employee{
    private int Hours=150;
    private double HoursSalary=100;

    public HourlyEmployee(){}

    public double getSalary(int month){
        if(month==super.getBirthMonth()){
            return Hours*HoursSalary+100;
        }
        return Hours*HoursSalary;
    }

    public int getHours() {
        return Hours;
    }

    public void setHours(int hours) {
        Hours = hours;
    }

    public double getHoursSalary() {
        return HoursSalary;
    }

    public void setHoursSalary(double hoursSalary) {
        HoursSalary = hoursSalary;
    }
}

Pay.java

package com.practice.F;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 20:35
 * <p>
 * 每个不同的员工类的重写父类的计算工资的方法 ,获取到正确的工资。
 * Employee:这是所有员工总的父类,
 * 属性:员工的姓名,员工的生日月份。
 * <p>
 * 方法:double  getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。
 * <p>
 * <p>
 * SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪。
 * HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数。
 * <p>
 * SalesEmployee:Employee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率。
 * <p>
 * <p>
 * BasedPlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售人员,
 */
public class Pay {
    public static void main(String[] args) {
        SalariedEmployee sa = new SalariedEmployee();
        System.out.println("SalariedEmployee 工资为 " + sa.getSalary(6));
        HourlyEmployee ho = new HourlyEmployee();
        System.out.println("HourlyEmployee 工资为 " + ho.getSalary(9));
        SalesEmployee sal = new SalesEmployee();
        System.out.println("SalesEmployee 工资为 "+sal.getSalary(10));
        BasedPlusSalesEmployee ba = new BasedPlusSalesEmployee();
        System.out.println("BasedPlusSalesEmployee 工资为 "+ba.getSalary(11));
    }

}

SalariedEmployee.java

package com.practice.F;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 20:16
 *
 * SalariedEmployee:
 * Employee的子类,拿固定工资的员工。属性:月薪。
 */
public class SalariedEmployee extends Employee{
    private double salary=10000;

    public SalariedEmployee(){}

    public double getSalary(int month){
        if(month==super.getBirthMonth()){
            return salary+100;
        }
        return salary;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}

SalesEmployee.java

package com.practice.F;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 20:28
 *
 * SalesEmployee:
 * Employee的子类,销售人员,工资由月销售额和提成率决定。
 * 属性:月销售额、提成率。
 */
public class SalesEmployee extends Employee{
    private double MonthlySales = 1000000;
    private double CommissionRate = 0.01;

    public SalesEmployee(){}

    public double getSalary(int month){
        if(month==super.getBirthMonth()){
            return MonthlySales*CommissionRate+100;
        }
        return MonthlySales*CommissionRate;
    }

    public double getMonthlySales() {
        return MonthlySales;
    }

    public void setMonthlySales(double monthlySales) {
        MonthlySales = monthlySales;
    }

    public double getCommissionRate() {
        return CommissionRate;
    }

    public void setCommissionRate(double commissionRate) {
        CommissionRate = commissionRate;
    }
}

com.practice.G

GreenLamp.java

package com.practice.G;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 20:58
 */
public class GreenLamp extends Lamp{

    public void light(){
        System.out.println("绿光");
    }
}

Lamp.java

package com.practice.G;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 20:52
 *
 * 定义一个台灯类Lamp,有一个灯泡属性,还有一个开灯的方法。
 * 灯泡分为红灯泡和绿灯泡,都有发光的方法。
 * 要求:在不修改台灯代码的前提下,更换灯泡发出不同的光。
 */
public class Lamp {
    private String lamp;

    public Lamp(){}

    public void light(){
        System.out.println("光");
    }
}

Light.java

package com.practice.G;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 21:00
 */
public class Light {

    public void light(Lamp l){
        l.light();
    }
    public static void main(String[] args) {
        RedLamp r = new RedLamp();
        GreenLamp g = new GreenLamp();
        Light l = new Light();
        l.light(r);
        l.light(g);
    }
}

RedLamp.java

package com.practice.G;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/7/28 20:58
 */
public class RedLamp extends Lamp{
    public void light(){
        System.out.println("红光");
    }
}

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

PerCheung

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

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

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

打赏作者

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

抵扣说明:

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

余额充值