第一題:數組
設計一個形狀類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); } } }