java面向對象基礎編程題

第一題:數組

設計一個形狀類Shape,方法:求周長和求面積。形狀類的子類:Rect(矩形),Circle(圓形)。
Rect類的子類:Square(正方形)。不一樣的子類會有不一樣的計算周長和麪積的方法
1.總的父類ide

package com.num4_2;
/*設計一個形狀類Shape,方法:求周長和求面積。形狀類的子類:Rect(矩形),Circle(圓形)。
Rect類的子類:Square(正方形)。不一樣的子類會有不一樣的計算周長和麪積的方法
 */
public class Shape {//形狀類
    public int chang;//定義長
    public int kuan;//定義寬

    /*public Shape() {
        System.out.println("我是最大的父類");
    }*/

    public int zhouChang(int chang, int kuan){//求周長的方法
return 0;
    }
    public int mianJi(int chang,int kuan){//求面積的方法
return 0;
    }
}

2.各個子類函數

package com.num4_2;

public class Circle extends Shape {//
    private double r;//半徑
    private static double PI=3.14;
    public Circle(){
        System.out.println("這是一個無參構造方法");
    }
    public Circle(double r){
        this.r=r;
    }
    public  void  zhouChang(){
        //return PI*r*2;
        System.out.println("圓的周長爲:"+PI*r*2);
    }
    public void mianJi(){
       System.out.println("圓的周長爲:"+PI*r*r);
    }
}
package com.num4_2;

public class Rect  extends Shape{ //矩形
private int chang;
private int kuan;
public Rect(){
  //  System.out.println("這是一個無參的構造方法");
}

    public Rect(int chang, int kuan){
    this.chang=chang;
    this.kuan=kuan;
}


    public void zhouchang(){
    System.out.println("矩形的周長爲:"+(chang+kuan)*2);
}
public void mianji(){
    System.out.println("矩形的面積爲:"+chang*kuan);
}
}
package com.num4_2;

public class Square extends Rect {  //正方形
    private int chang;
    public Square(){
        System.out.println("這是一個無參構造函數");
    }
    public Square(int chang){
        this.chang=chang;
    }
    public void zhouChang(){
        System.out.println("正方形的周長爲:"+chang*4);
    }
    public void mianJi(){
        System.out.println("正方形的面積爲:"+chang*chang);
    }
}

3.測試類測試

package com.num4_2;

public class Test {
    public static void main(String[] args) {
/*Shape shape=new Shape();
shape.chang=2;
shape.kuan=4;//無效
        shape.mianJi(2,3);
        shape.zhouChang(2,4);*/

Circle circle=new Circle(3);
circle.mianJi();
circle.zhouChang();
Square square=new Square(5);
square.mianJi();
square.zhouChang();
        Rect rect=new Rect(2,3);
        rect.mianji();
        rect.zhouchang();
Shape shape = new Shape();
    }
}

第二題:this

設計一個檯燈類(Lamp)其中臺燈有燈泡類(Buble)這個屬性,還有開燈(on)這個方法。
設計一個燈泡類(Buble),燈泡類有發亮的方法,其中有紅燈泡類(RedBuble)和綠燈泡類(GreenBuble)
他們都繼承燈泡類(Buble)一個發亮的方法。url

1.個各種spa

 

package com.num4_3;
/*設計一個檯燈類(Lamp)其中臺燈有燈泡類(Buble)這個屬性,還有開燈(on)這個方法。
 設計一個燈泡類(Buble),燈泡類有發亮的方法,其中有紅燈泡類(RedBuble)和綠燈泡類(GreenBuble)
 他們都繼承燈泡類(Buble)一個發亮的方法、*/
public class Lamp {// 檯燈類
public Buble b;//初始化一個對象
    public Lamp(Buble b){//有參的構造方法
        this.b=b;
    }
    public void on(){
        b.faLiang();//調用子類重寫後的方法
    }
}

 

package com.num4_3;

public class Buble  {//燈泡類
public void faLiang(){
    System.out.println("燈泡能夠發亮");

}
}
package com.num4_3;

public class GreenBuble extends Buble {
    @Override
public void faLiang(){
    System.out.println("發綠光");
}
}
package com.num4_3;

public class RedBuble extends Buble {
    @Override
public void faLiang(){

    System.out.println("發紅光");
}
}

2.測試類設計

package com.num4_3;

public class Test1 {
    public static void main(String[] args) {
     
      RedBuble redBuble=new RedBuble();
      redBuble.faLiang();
    }
}

第三題:code

Employee:這是全部員工總的父類,屬性:員工的姓名,員工的生日月份。
方法:double getSalary(int month) 根據參數月份來肯定工資,若是該月員工過生日,
則公司會額外獎勵100元。
SalariedEmployee:Employee的子類,拿固定工資的員工。屬性:月薪
HourlyEmployee:Employee的子類,按小時拿工資的員工,每個月工做超出160小時的部分按照1.5倍工資發放。
屬性:每小時的工資、每個月工做的小時數
SalesEmployee:Employee的子類,銷售人員,工資由月銷售額和提成率決定。
屬性:月銷售額、提成率
BasePlusSalesEmployee:SalesEmployee的子類,有固定底薪的銷售人員,工資由底薪加上銷售提成部分。
屬性:底薪。
寫一個程序,把若干各類類型的員工放在一個Employee數組裏,
寫一個方法,打印出某月每一個員工的工資數額。
注意:要求把每一個類都作成徹底封裝,不容許非私有化屬性。
對象

1.父類

package com.num4_5;
public class Employee {//員工類的父類
    private String name;//員工的姓名
    private int birthday;//生日
    public String getName(){
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public int getBirthday(){
        return birthday;
    }
    public void setBirthday(int birthday) {
        this.birthday = birthday;
    }

    public void getSalary(int month){//方法:double getSalary(int month) 根據參數月份來肯定工資,若是該月員工過生日,

    }

}

2.各個子類

package com.num4_5;

public class BasePlusSalesEmployee extends SalesEmployee {//銷售人員,工資由月銷售額和提成率決定。
    private double xd;//具備薪底
    public double getXd(){
        return xd;
    }
    public void setXd(double xd){
        this.xd=xd;
    }
    @Override
    public void getSalary(int month){
        double gz=(month==getBirthday())?(getXd()*getTcl()+xd+1000):(getXd()*getTcl()+xd);
        System.out.println(getName()+month+"月份的工資爲:"+gz+"元");
    }
}
package com.num4_5;

public class HourlyEmployee extends Employee {//Employee的子類,按小時拿工資的員工
    private double xsgz;//每小時的工資
    private  double hours;//每個月工做的小時數
    public double getXsgz(double xsgz) {
        return xsgz;
    }
    public void setXsgz(double xsgz){
        this.xsgz=xsgz;
    }
    public double getHours(double hours){
        return hours;
    }
    public void setHours(double hours){//按小時拿工資的員工
        this.hours=hours;
    }
    @Override
    public void getSalary(int month){
double gz=(hours<=160)?(hours*xsgz):((hours-160)*xsgz*1.5)+(160*xsgz);//定義了一個工資的屬性
        if(month==getBirthday()){
            System.out.println(getName()+month+"本月的工資爲;"+(gz+1000)+"元");
        }
        else{
            System.out.println(getName()+month+"本月的工資爲;"+gz+"元");
        }
    }
}
package com.num4_5;

public class SalariedEmployee extends Employee{//拿固定工資的員工
    public double yx;//屬性:月薪
    public double getYx(){
        return yx;
    }
    public void setYx(double yx) {
        this.yx = yx;
    }
    @Override
    public void getSalary(int month){//方法:double getSalary(int month) 根據參數月份來肯定工資,若是該月員工過生日,
/*if(month==birthday){
            System.out.println(name+month+"本月的工資爲;"+(yx+1000)+"元");
        }
        else{
            System.out.println(name+month+"本月的工資爲;"+(yx)+"元");
        }*/
double gz=(month==getBirthday())?(yx+1000):yx;
System.out.println(getName()+month+"月份的工資爲:"+gz+"元");
    }
}
package com.num4_5;

public class SalesEmployee extends Employee {//銷售人員
    private double yxse;//月銷售額
    private double tcl;//提成率
    public double getYxse(){
        return yxse;
    }
    public void setYxse(double yxse){
        this.yxse=yxse;
    }
    public double getTcl(){
        return tcl;
    }
    public void setTcl(double tcl){
        this.tcl=tcl;
    }
    @Override
    public void getSalary(int month){
        double gz=(month==getBirthday())?(yxse*tcl+1000):(yxse*tcl);
        System.out.println(getName()+month+"月份的工資爲:"+gz+"元");
    }
}

3.測試類

package com.num4_5;

public class Test4_5 {
    public static void main(String[] args) {
        SalariedEmployee e1 = new SalariedEmployee();
        e1.setName("張三");
        e1.setBirthday(1);
        e1.setYx(3000);

        HourlyEmployee e2 = new HourlyEmployee();
        e2.setName("李四");
        e2.setBirthday(2);
        e2.setXsgz(10);
        e2.setHours(160);

        SalesEmployee e3 = new SalesEmployee();
        e3.setName("王五");
        e3.setBirthday(3);
        e3.setYxse(10000);
        e3.setTcl(0.1);

        BasePlusSalesEmployee e4 = new BasePlusSalesEmployee();
        e4.setName("王五");
        e4.setBirthday(3);
        e4.setYxse(10000);
        e4.setTcl(0.1);
        e4.setXd(2000);

        Employee[] e = {e1,e2,e3,e4};//數組

        for (Employee em : e) {
            System.out.println(em.getName());
        }
       /* for(Employee AM;AM<e.length;){
            System.out.println(AM.getName());
        }
*/

        for (int i = 1; i < 13; i++) {
            System.out.println("------------第"+i+"月工資表------------");
            e1.getSalary(i);
            e2.getSalary(i);
            e3.getSalary(i);
            e4.getSalary(i);
        }

    }
}
相關文章
相關標籤/搜索