zoukankan      html  css  js  c++  java
  • 第十二周作业

    1、设计个类,分别是:(知识点:抽象类及抽象方法)

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

    22个子类:

    1Rectangle表示矩形类,增加两个属性,Width表示长度、height表示宽度,重写getPergetAreashowAll三个方法,另外又增加一个构造方法(一个是默认的、一个是为高度、宽度、颜色赋值的)。

    2Circle表示圆类,增加1个属性,radius表示半径,重写getPergetAreashowAll三个方法,另外又增加两个构造方法(为半径、颜色赋值的)。

     3)一个测试类PolyDemo,在main方法中,声明创建每个子类的对象,并调用2个子类的showAll方法。

    package finish;
    public abstract class finish {
        protected double area;
        protected double per;
        protected String color;
    
        public finish() {
    
        }
    
        public finish(String color) {
            this.color = color;
        }
    
        public abstract void getArea();
    
        public abstract void getPer();
    
        public abstract void showAll();
    
    }
    package finish;
    
    public class Rectangle extends finish {
        double width;
        double height;
    
        public Rectangle() {
    
        }
    
        public Rectangle(double width, double height, String color) {
            super();
            this.width = width;
            this.height = height;
            this.color = color;
        }
    
        @Override
        public void getArea() {
            area = width * height;
    
        }
    
        @Override
        public void getPer() {
            per = (width + height) * 2;
        }
    
        @Override
        public void showAll() {
            System.out.println("矩形面积为:" + area + ",周长为:" + per + ",颜色:" + color);
        }
    
    }
    package finish;
    
    public class Circle extends finish{
        double radius;
    
        public Circle() {
    
        }
    
        public Circle(double radius, String color) {
            this.color = color;
            this.radius = radius;
        }
    
        @Override
        public void getArea() {
            area = radius * radius * 3.14;
        }
    
        @Override
        public void getPer() {
            per = 2 * radius * 3.14;
        }
    
        @Override
        public void showAll() {
            System.out.println("圆的面积为:" + area + ",周长为:" + per + ",颜色:" + color);
        }
    }
    package finish;
    
    public class finish {
        public static void main(String[] args) {
            Circle circle = new Circle(3, "break");
            Rectangle rectangle = new Rectangle(2, 4, "red");
            circle.getArea();
            circle.getPer();
            circle.showAll();
    
            rectangle.getArea();
            rectangle.getPer();
            rectangle.showAll();
    
        }
    }

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

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

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

    (2) SalariedEmployee ColaEmployee 的子类,拿固定工资的员工。

    Ÿ 属性:月薪

    (3) HourlyEmployee ColaEmployee 的子类,按小时拿工资的员工,每月工作超出160 小时的部分按照1.5 倍工资发放。

    Ÿ 属性:每小时的工资、每月工作的小时数

    (4) SalesEmployee ColaEmployee 的子类,销售人员,工资由月销售额和提成率决定。

    Ÿ 属性:月销售额、提成率

    (5) 定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类TestCompany,main方法,把若干各种类型的员工放在一个ColaEmployee 数组里,并单元出数组中每个员工当月的工资。

    package finish;
    public class finish {
        String name;
        int month;
    
        public finish() {
    
        }
    
        public finish(String name, int month) {
            super();
            this.name = name;
            this.month = month;
        }
    
        public double getSalary(int month) {
            return 0;
        }
    
    }
    package finish;
    
    public class SalariedEmployee extends finish {
        double monSalary;
    
        public SalariedEmployee() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        public SalariedEmployee(String name, int month, double monSalary) {
            super(name, month);
            this.monSalary = monSalary;
        }
    
        public double getSalary(int month) {
            if (super.month == month) {
                return monSalary + 100;
            } else {
                return monSalary;
            }
        }
    
    }
    package finish;
    
    public class HourlyEmployee extends finish {
        private int hourSalary;
        private int hourNum;
    
        public HourlyEmployee(String name, int month, int hourSalary, int hourNum) {
            super(name, month);
            this.hourSalary = hourSalary;
            this.hourNum = hourNum;
    
        }
    
        public double getSalary(int month) {
            if (super.month == month) {
                if (hourNum > 160) {
                    return hourSalary * 160 + hourSalary * (hourNum - 160) * 1.5 + 100;
                } else {
                    return hourSalary * hourNum + 100;
                }
            } else {
                if (hourNum > 160) {
                    return hourSalary * 160 + hourSalary * (hourNum - 160) * 1.5;
                } else {
                    return hourSalary * hourNum;
                }
            }
    
        }
    
    }
    package finish;
    
    public class SalesEmployee extends finish {
        private int monthSales;
        private double royaltyRate;
    
        public SalesEmployee(String name, int month, int monthSales, double royaltyRate) {
            super(name, month);
            this.monthSales = monthSales;
            this.royaltyRate = royaltyRate;
        }
    
        public double getSalary(int month) {
            if (super.month == month) {
                return monthSales * royaltyRate + 100;
            } else {
                return monthSales * royaltyRate;
            }
        }
    
    }
    package finish;
    
    public class finish{
        public void getSalary(ColaEmployee c, int month) {
            System.out.println(c.name + "在" + month + "月的月薪为" + c.getSalary(month) + "元");
        }
    
    }
    package finish;
    
    public class finish {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            // 创建、初始化数组
            ColaEmployee[] cel = { new SalariedEmployee("salariedEmployee", 6, 25000), // name,month,月薪
                    new HourlyEmployee("hourlyEmployee", 5, 200, 200), // name,month,时薪,小时数
                    new SalesEmployee("salesEmployee", 3, 60000, 0.3)// name,month,月销售额,提成率
            };
            // 数组遍历
            for (int i = 0; i < cel.length; i++) {
                new Company().getSalary(cel[i], 7);
            }
        }
    
    }

    3.

    package finish;
    import java.util.Scanner;
    
    public class finish {
    
        interface Fruit{
            
        }
    
        class Apple implements Fruit {
            public Apple() {
                System.out.println("创建了一个苹果对象");
            }
        }
    
        class Pear implements Fruit {
            public Pear() {
                System.out.println("创建了一个梨对象");
            }
        }
    
        class Orange implements Fruit {
            public Orange() {
                System.out.println("创建了一个桔子对象");
            }
        }
    
        class Gardener{
            public Fruit create() {
                Scanner input = new Scanner(System.in);
                String name = input.next();
                
                Fruit fruit = null;
                switch(name){
                case "苹果":
                    fruit = new Apple();
                    break;
                case "梨":
                    fruit = new Pear();
                    break;
                case "桔子":
                    fruit = new Orange();
                    break;
                }
                
                input.close();
                
                return fruit;
            }
        }
    }
    package finish;
    
    
    public class finish {
    
        public static void main(String args[]) {
            
    
                Gardener g = new Gardener();
                g.create();
    
            }
    
        
    }
      

     

  • 相关阅读:
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Navicat查询哪些表有指定字段名
  • 原文地址:https://www.cnblogs.com/csy521/p/12929621.html
Copyright © 2011-2022 走看看