天天看點

Lesson_for_java_day09--練習--繼承、this、super的使用、使用構造方法賦初始值

 練習:

package sonyi;

/*
 * 
 *練習:
 *	目的:練習this,super的使用,構造方法覆初始值,繼承初步
 *	步驟:
 *		1、建立一個Company類
 *			屬性:姓名,性别,工資(設定為私有)
 *			方法:printMsg();//列印這個部門的人員所有資訊
 *		2、建立一個Dept類繼承Company
 *			屬性:技能
 *			方法:printMsg();//列印這個部門的人員所有資訊
 *		3、建立一個Manage類繼承Dept
 *			屬性:職位
 *			方法:printMsg();//列印這個部門的人員所有資訊
 *		4、建立一個測試類
 *			執行個體化一個Company對象,執行個體化一個Dept對象,執行個體化兩個Manage對象,
 *				分别列印各自的全部資訊。
 */
public class ExtendsDemo {
	public static void main(String[] args) {

		//建立各類的對象,并初始化值
		Company c1 = new Company("張三",'男',2000);
		Company c2 = new Company("小張",'男');
		Dept d = new Dept("小紅",'女',3000,"前端");
		Manage m1 = new Manage("李四",'男',2500,"後端","工程師");
		Manage m2 = new Manage("小王",'女',3500,"資料庫","資料庫工程師");
		
		//列印各對象的全部資訊
		c1.printMsg();
		c2.printMsg();
		d.printMsg();
		m1.printMsg();
		m2.printMsg();
	}

}

//建立Company父類
class Company{
	private String name;//設定私有屬性
	private char sex;
	private double salary;
	
	public Company(){//無參構造方法
	}
	
	public Company(String name, char sex, double salary) {//重載構造方法(三個參數)
		this.name = name;//this的使用1:調用本類的屬性和方法
		this.sex = sex;
		this.salary = salary;
	}	

	public Company(String name, char sex) {	//兩個參數的構造方法(重載)
		this(name,sex,0.0);//this的使用2:調用本類的構造方法
	}


	public String getName() {//設定私有屬性的擷取方法
		return name;
	}
	
	public void setName(String name) {//設定私有屬性的指派方法
		this.name = name;
	}
	
	public char getSex() {
		return sex;
	}
	
	public void setSex(char sex) {
		this.sex = sex;
	}
	
	public double getSalary() {
		return salary;
	}
	
	public void setSalary(double salary) {
		this.salary = salary;
	}
	
	public void printMsg(){
		System.out.println("我的姓名是:" + getName() + ",我的性别是:" + getSex() + 
				",我的工資是:" + getSalary());
	}
}

//建立Company的子類
class Dept extends Company{
	
	private String skill;//設定對象特有的私有屬性
	
	Dept(){	
	}
	
	//四個參數的構造函數
	Dept(String name,char sex,double salary,String skill){
		super(name,sex,salary);//super的使用1:調用父類的構造函數,減少重複代碼
		this.skill = skill;
	}	
	
	public String getSkill() {
		return skill;
	}

	public void setSkill(String skill) {
		this.skill = skill;
	}
	
	public void printMsg(){//列印該類的所有資訊
		super.printMsg();//super的使用2:調用父類的方法,減少重複代碼
		System.out.println("\t我的技能是:" + getSkill());
	}
}

//建立Dept的子類
class Manage extends Dept{
	//設定該類特有的私有屬性
	private String position;

	Manage(){//無參構造函數	
	}
	
	//五個參數的構造函數
	Manage(String name,char sex,double salary,String skill,String position){
		super(name,sex,salary,skill);//調用父類的構造函數
		this.position = position;
	}
	
	public String getPosition() {//設定私有屬性的擷取方法
		return position;
	}

	public void setPosition(String position) {//設定私有屬性的指派方法
		this.position = position;
	}
	
	public void printMsg(){//列印該類所有的資訊
		super.printMsg();//調用父類的列印方法,減少重複代碼
		System.out.println("\t我的職位是:" + getPosition());
	}
	
}

           

繼續閱讀