JAVA-2.0-上机

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 study;

public abstract class Shape {
    double area;
    double per;//perimeter
    String color;
    public Shape() {
        
    }
    public Shape(String color) {
        super();
        this.color = color;
    }
    public abstract void getArea();
    public abstract void getPer();
    public abstract void showAll();
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    
    
}
package study;

public class Rectangle extends Shape{
    double length;
    double width;
    public Rectangle() {
            
    }
    public Rectangle(double a, double b,String c) {
        super();
        length=a;
        width=b;
        color=c;
    }
    @Override
    public void getArea() {
        // TODO Auto-generated method stub
        area=length*width;
    }
    @Override
    public void getPer() {
        // TODO Auto-generated method stub
        per=(length+width)*2;
    }
    @Override
    public void showAll() {
        // TODO Auto-generated method stub
        System.out.println("颜色是"+color+"面积是"+area+"周长是"+per);
        
    }
    
}
package study;

public class Circle extends Shape{
    double radius;
    
    public Circle() {
        
    }
    public Circle(double radius,String a) {
        super();
        this.radius = radius;
        color=a;
    }
    
    @Override
    public void getArea() {
        // TODO Auto-generated method stub
        area=radius*radius*3.14;
    }
    @Override
    public void getPer() {
        // TODO Auto-generated method stub
        per=2*radius*3.14;
    }
    @Override
    public void showAll() {
        // TODO Auto-generated method stub
        System.out.println("颜色是"+color+"半径是"+radius+"面积是"+area+"周长是"+per);
    }

}
package study;

public class PolyDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Rectangle r=new Rectangle(3,4,"月白");
        r.getArea();
        r.getPer();
        r.showAll();
        Circle c=new Circle(2.0,"橙黄");
        c.getArea();
        c.getPer();
        c.showAll();
    }

}

2、Cola公司的雇员分为以下若干类:(知识点:多态)
(1) ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份。
Ÿ 方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100 元。
(2) SalariedEmployee :    ColaEmployee 的子类,拿固定工资的员工。
Ÿ 属性:月薪
(3) HourlyEmployee :ColaEmployee 的子类,按小时拿工资的员工,每月工作超出160 小时的部分按照1.5 倍工资发放。
Ÿ 属性:每小时的工资、每月工作的小时数
(4) SalesEmployee :ColaEmployee 的子类,销售人员,工资由月销售额和提成率决定。
Ÿ 属性:月销售额、提成率
(5) 定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类TestCompany,在main方法,把若干各种类型的员工放在一个ColaEmployee 数组里,并单元出数组中每个员工当月的工资。
package Cola;

public abstract class ColaEmployee {
    String name;
    int birthmonth;
    
    public ColaEmployee() {
        
    }

    public ColaEmployee(String name, int birthmonth) {
        this.name = name;
        this.birthmonth = birthmonth;
    }

    abstract double getSalary(int month) ;
}
package Cola;

public class SalariedEmployee extends ColaEmployee{
    double salar;
    
    public SalariedEmployee() {
        
    }

    public SalariedEmployee(String name, int birthmonth,double salar) {
        super(name,birthmonth);
        this.salar=salar;
    }

    @Override
     double getSalary(int month) {
        if(month==birthmonth) {
            salar+=100;
        }
        return salar;
    }
}
package Cola;

public class HourlyEmployee extends ColaEmployee{
    double shourly;
    double hours;

    public HourlyEmployee() {
        super();
        // TODO Auto-generated constructor stub
    }

    public HourlyEmployee(String name, int birthmonth,double shourly,double hours) {
        super(name, birthmonth);
        // TODO Auto-generated constructor stub
        this.shourly=hours;
        this.hours=hours;
    }

    double getSalary(int month) {
        if(hours>160.0) {
            shourly=(160.0*shourly)+(hours-160.0)*(shourly*1.5);
        }else {
            shourly=hours*shourly;
        }
        if(month==birthmonth) {
            shourly+=100.0;
            return shourly;
        }else {
            return shourly;
        }
    }
}
package Cola;

public class SalesEmployee extends ColaEmployee{
    double smonthly;
    double rate;
    
     public SalesEmployee() {
        super();
        // TODO Auto-generated constructor stub
    }

    public SalesEmployee(String name, int birthmonth, double smonthly,double rate) {
        super(name, birthmonth);
        // TODO Auto-generated constructor stub
        this.smonthly=smonthly;
        this.rate=rate;
    }

    public double getSalary(int month) {
         smonthly=smonthly+smonthly*rate;
         if(month==birthmonth) {
             smonthly+=100;
             return smonthly;
         }else {
             return smonthly;
         }
     }
}
package Cola;

public class Company{
    public static void getSalary(ColaEmployee a,int month) {
        System.out.println(month+"月"+a.name+"员工"+"的月薪是"+a.getSalary(month)+"元。");
    }
}
package Cola;

public class TestCompany {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ColaEmployee [] b=new ColaEmployee[6];
        b[0]=new SalesEmployee("王伟", 4, 10000, 5);
        b[1]=new SalesEmployee("刘美",8,12000,5);
        b[2]=new SalariedEmployee("张钧", 11, 20000);
        b[3]=new SalariedEmployee("高晟", 2, 23000);
        b[4]=new HourlyEmployee("季澊", 9, 200, 168);
        b[5]=new HourlyEmployee("沈复",5,300,170);
        for (ColaEmployee a:b) {
            Company.getSalary(a,5);
        }
    }

}

3、利用接口实现动态的创建对象:(知识点:接口 )
(1)创建4个类
    1苹果
    2香蕉
    3葡萄
    4园丁
(2)在三种水果的构造方法中打印一句话.
    以苹果类为例
    class apple
    {
        public apple()
        {
            System.out.println(“创建了一个苹果类的对象”);
    }
    }
(3)类图如下:

(4)要求从控制台输入一个字符串,根据字符串的值来判断创建三种水果中哪个类的对象。
    运行结果如图:

         
package study;

public interface Fruit {
    
}

package study;

public class apple implements Fruit {

    public apple() {
        super();
        // TODO Auto-generated constructor stub
        System.out.println("创建了一个苹果类的对象");
    }
    
}

package study;

public class Banana  implements Fruit {

    public Banana() {
        super();
        // TODO Auto-generated constructor stub
        System.out.println("创建了一个香蕉类的对象");
    }
    
}
package study;

public class Pear  implements Fruit {

    public Pear() {
        super();
        // TODO Auto-generated constructor stub
        System.out.println("创建了一个梨类的对象");
    }
    
}
package study;

import java.util.Scanner;

public class Garder {
     public void creater() {
             System.out.println("请输入你想创建的果园(苹果,梨,香蕉):");
            String s = "";
            Scanner input = new Scanner(System.in);
            s = input.nextLine();
            if (s.equals("苹果")) {
                new apple();
            } else if (s.equals("香蕉")) {
                new Banana();
            } else if (s.equals("梨")) {
                new Pear();
            } else {
                System.out.println("请输入正确的对象");
            }
        }
}
package study;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
         new Garder().creater();
                
        }
    }

 

 

原文地址:https://www.cnblogs.com/yunlan/p/12929857.html