zoukankan      html  css  js  c++  java
  • 最新作业~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~··

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

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

    (2)2个子类:

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

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

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

     

    package chap3;
    
    public abstract class Shape {
        protected double area;
        protected double per;
        protected String color;
    
        public Shape() {
        }
    
        public Shape(String color) {
            this.color = color;
        }
    
        public abstract double getArea();
    
        public abstract double getPer();
    
        public abstract void showAll();
    
        public String getcolor() {
            return this.color;
        }
    
    }
    package chap3;
    
    public class Rectangle extends Shape {
        int weigth;
        int height;
    
        public Rectangle() {
        }
    
        public Rectangle(int weigth, int height, String color) {
            super();
            this.weigth = weigth;
            this.height = height;
            this.color = color;
        }
    
        public double getArea() {
            this.area = weigth * height;
            return this.area;
        }
    
        public double getPer() {
            this.per = 2 * (weigth + height);
            return this.per;
        }
    
        public void showAll() {
            System.out.println("该矩形长为" + this.weigth + ",宽为" + this.height + ",周长为" + this.getPer() + ",面积为"
                    + this.getArea() + ",颜色为" + this.getcolor());
    
        }
    }
    package chap3;
    
    public class Circle extends Shape {
        double radius;
        double pi = Math.PI;
    
        public Circle() {
        }
    
        public Circle(double radius, String color) {
            this.radius = radius;
            this.color = color;
        }
    
        public double getArea() {
            double area = pi * radius * radius;
            return area;
        }
    
        public double getPer() {
            double per = 2 * pi * radius;
            return per;
        }
    
        public void showAll() {
            System.out.println(
                    "半径为" + this.radius + "的圆,周长为" + this.getPer() + ",面积为" + this.getArea() + ",颜色为" + this.getcolor());
        }
    
    }
    package chap3;
    
    public class PolyDemo {
        public static void main(String[] args) {
            Rectangle a = new Rectangle(2, 5, "yellow");
            Circle b = new Circle(2, "black");
            a.showAll();
            b.showAll();
        }
    }

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

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

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

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

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

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

    package chap3;
    
    public class ColaEmployee {
        String name;
        int month;
        
        public ColaEmployee() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        public ColaEmployee(String name, int month) {
            super();
            this.name = name;
            this.month = month;
        }
        
        public double getSalary(int month) {
            return 0;
        }
    }
    package chap3;
    
    public class SalesEmployee extends ColaEmployee{
        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 chap3;
    
    public class Company {
        public void getSalary(ColaEmployee c, int month) {
            System.out.println(c.name + "在" + month + "月的月薪为" + c.getSalary(month) + "元");
        }
    }
    package chap3;
    
    public class TestCompany {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            ColaEmployee[] cel= {new SalariedEmployee("jack", 6, 10000),new HourlyEmployee("按小时拿工资的员工", 10, 50, 200),new SalesEmployee("销售人员", 6, 20000, 0.8)};
            for (int i = 0; i < cel.length; i++) {
                new Company().getSalary(cel[i], 8);
            }
        }
    
    }
    package chap3;
    
    public class HourlyEmployee extends ColaEmployee{
        private int hourSalary;
        private int num;
        
        public HourlyEmployee(String name,int month,int hourSalary, int num) {
            super(name,month);
            this.hourSalary = hourSalary;
            this.num = num;
        }
        public double getSalary(int month) {
            if (super.month == month) {
                if (num>160) {
                    return hourSalary * 160 + hourSalary * (num - 160) * 1.5 +100;
                } else {
                    return hourSalary * num + 100;
                }
            } else {
                if (num >160) {
                    return hourSalary * 160 + hourSalary * (num - 160) * 1.5;
                } else {
                    return hourSalary * num;
                }
            }
        }
    }

    3、利用接口实现动态的创建对象:(知识点:接口 )

    (1)创建4个类

    1苹果

    2香蕉

    3葡萄

    4园丁

    (2)在三种水果的构造方法中打印一句话.

    以苹果类为例

    class apple

    {

    public apple()

    {

    System.out.println(“创建了一个苹果类的对象”);

    }

    package chap3;
    
    public class apple implements Fruit {
        public apple() {
            System.out.println("创建了一个苹果类对象");
        }
    
    }
    package chap3;
    
    public interface Fruit {
    
    }
    package chap3;
    
    public class banana implements Fruit {
        public banana() {
            System.out.println("创建了一个香蕉类对象");
        }
    }
    package chap3;
    
    public class grape implements Fruit {
        public grape() {
            System.out.println("创建了一个葡萄类对象");
        }
    
    }
    package chap3;
    
    import java.util.Scanner;
    
    public class gardener {
        public void creater() {
            Scanner input = new Scanner(System.in);
            String a = input.next();
            if (a.equals("苹果")) {
                new apple();
            } else if (a.equals("香蕉")) {
                new banana();
            } else if (a.equals("葡萄")) {
                new grape();
            } else {
                System.out.println("请重新运行");
            }
        }
    
        public static void main(String[] args) {
            new gardener().creater();
        }
    }

  • 相关阅读:
    数据库字段太多,批量快速建立实体类方法(适合大量字段建立实体类)
    SQL service 中的 ”输入SQL命令窗口“ 打开了 “属性界面” 回到 ”输入SQL命令窗口“
    计算机软件编程英语词汇集锦
    编程常用英语词汇
    svn上传和下载项目
    当启动tomcat时出现tomcat setting should be set in tomcat preference page
    Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor
    eclipse中选中一个单词 其他相同的也被选中 怎么设置
    Spring Boot的@SpringBootApplication无法引入的问题
    最全的SpringCloud视频教程
  • 原文地址:https://www.cnblogs.com/skyfail/p/12930089.html
Copyright © 2011-2022 走看看