練習:
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());
}
}