JAVA第九次作业

3、设计三个类,分别如下:(知识点:抽象类及抽象方法)[必做题]

·3.1设计 Shape 表示图形类,有面积属性 area 、周长属性 per ,

颜色属性 color ,有两个构造方法(一个是默认的、一个是为颜色赋值的),还有3个抽象方法,分别是: getArea 计算面积、 getPer 计算周长、 showAll 输出所有信息,还有一个求颜色的方法 getColor 。

·3.2设计2个子类:

·3.2.1 Rectangle 表示矩形类,增加两个属性, Width 表示长度

 height 表示宽度,重写 getPer 、 getArea 和 showAll 三个方法,另外又增加一个构造方法(一个是默认的、一个是为高度、宽度、颜色赋值的)。

3.2.2 Circle 表示圆类,增加1个属性, radius 表示半径,重写

 getPer 、 getArea 和 showAll 三个方法,另外又增加两个构造方法(为半径、颜色赋值的)。

·3.3在 main 方法中,声明创建每个子类的对象,并调用2个

子类的 showAll 方法。

//Shape

package zxc;

 

public abstract class Shape {

double area;

double per;

String color;

 

public Shape() {

super();

}

public Shape(String color) {

super();

this.color = color;

}

 

public abstract double getArea();

 

public abstract double getPer();

 

public abstract void showAll();

 

public String getColor() {

return color;

}

}

 

 

//Rectangle

package zxc;

 

public class Rectangle extends Shape {

    double Width;

    double height;

    public Rectangle() {

        super();

    }

 

    public Rectangle(double width, double height,String color) {

        super(color);

        Width = width;

        this.height = height;

    }

 

    public double getArea() {

        double Area=Width*height;

        return Area ;

                }

 

    public double getPer()

    {

        double Per=2*Width+2*height;

        return Per;

        }

 

    public void showAll()

    {

        System.out.println("长:"+height);

        System.out.println("宽:"+Width);

        System.out.println("面积:"+getArea());

        System.out.println("周长:"+getPer());

        System.out.println("颜色"+color);

    }

 

    

}

//Circle

package zxc;

 

public class Circle extends Shape {

public Circle() {

        super();

    }

    

    public Circle(double radius,String color) {

        super(color);

        this.radius = radius;

    }

 

    double radius;

    

    public  double getArea() {

        double Area=radius*radius*3.14;

        return Area;

    }

 

    public  double getPer()

    {

        double Per=2*3.14*radius;

        return Per;

    }

 

    public  void showAll()

    {

        System.out.println("半径:"+radius);

        System.out.println("面积:"+getArea());

        System.out.println("周长:"+getPer());

        System.out.println("颜色"+color);

    }

}

 

//menu

package zxc;

 

public class menu {

 public static void main(String[] args) {

        // TODO Auto-generated method stub

        Shape test_1=new Circle(20,"虹的");

        Shape test_2=new Rectangle(6,8,"蓝的");

        test_1.showAll();

        test_2.showAll();

    

 

}

 

}

 

 

4 Cola 公司的雇员分为以下若干类:(知识点:多态)[必做

题]

·4.1 ColaEmployee :这是所有员工总的父类,属性:员工的

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

100元。

4.2 SalariedEmployee :ColaEmployee 的子类,拿固定工

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

·4.4 SalesEmployee : ColaEmployee 的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率.4.5定义一个类 Company ,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类 TestCompany ,在 main 方法,把若干各种类型的员工在一个 ColaEmployee 数组里,并单元出数组中每个员工当月的工资。

资的员工。属性:月薪

//ColaEmployee

package zxc;

 

public abstract class ColaEmployee {

String name;

int birthday;

public ColaEmployee() {

super();

}

public ColaEmployee(String name, int birthday) {

super();

this.name = name;

this.birthday = birthday;

}

public abstract double getSalary(int month);

 

}

 

 

//SalariedEmployee

package zxc;

 

public class SalariedEmployee extends ColaEmployee{

double Salary;

 

public SalariedEmployee() {

super();

}

 

public SalariedEmployee(String name, int birthday,double salary) {

super(name,birthday);

Salary = salary;

}

 

public double getSalary(int month) {

if(birthday==month) {

Salary = Salary+100;

 

}

return Salary;

}

}

//HourlyEmployee

package zxc;

 

public class HourlyEmployee extends ColaEmployee{

 

double Hour_Salary;

double Month_hour;

public HourlyEmployee() {

super();

}

public HourlyEmployee(String name, int birthday,double hour_Salary, double month_hour) {

super(name,birthday);

Hour_Salary = hour_Salary;

Month_hour = month_hour;

}

public double getSalary(int month) {

double Salary=0;

if(Month_hour>160) {

Salary=Hour_Salary*Month_hour+(Month_hour-160)*Hour_Salary*1.5;

}else if(Month_hour<=160){

Salary=Hour_Salary*Month_hour;

}

if(birthday==month)

        {

            Salary=Salary+100;

        }

        return Salary;

    }

}

 

//SalesEmployee

package zxc;

 

public class SalesEmployee extends ColaEmployee{

int Moon_Sales;

    double Commission;

    

    public SalesEmployee() {

        super();

    }

 

    public SalesEmployee(String name, int birthday, int moon_Sales, double commission) {

        super(name, birthday);

        Moon_Sales = moon_Sales;

        Commission = commission;

    }

 

    public double getSalary(int month) {

        double Salary=0;

        Salary=Moon_Sales*Commission;

        if(birthday==month)

        {

            Salary=Salary+100;

        }

        return Salary;

    }

    

}

 

//Company

package zxc;

 

public class Company {

public void ShowSalary(ColaEmployee test,int month)

    {

        System.out.println("员工:"+test.name+"\n月份:"+month+"\n工资状况:"+test.getSalary(month));

    }

}

 

//测试类

package zxc;

 

public class TestCompany {

public static void main(String[] args) {

 ColaEmployee[] test=new ColaEmployee[3];

     test[0]=new SalariedEmployee("cc",60,4000);

     test[1]=new HourlyEmployee("xx",6,300,800);

     test[2]=new SalesEmployee("zz",12,45000,0.2);

     Company show_fun=new Company();

     show_fun.ShowSalary(test[0], 5);

     show_fun.ShowSalary(test[1], 2);

     show_fun.ShowSalary(test[1], 3);

     show_fun.ShowSalary(test[2], 9);

     show_fun.ShowSalary(test[2], 10);

}

}

 

 

 

posted @ 2023-06-01 22:06  绫小路  阅读(29)  评论(0)    收藏  举报