1. 程式人生 > >面向物件_抽象類練習老師案例

面向物件_抽象類練習老師案例

/*
	老師案例
		具體事物:基礎班老師、就業班老師
		共性:姓名、年齡、講課
		
	分析:從具體到抽象
		基礎班老師:
			成員變數:姓名、年齡
			構造方法:無參、帶參
			成員方法:teach();(JavaEE)
		就業班老師:
			成員變數:姓名、年齡
			構造方法:無參、帶參
			成員方法:teach();(JavaSE)
		老師:
			成員變數:姓名、年齡
			構造方法:無參、帶參
			成員方法:teach();
			
	實現:從抽象到具體
		老師:
			成員變數:姓名、年齡
			構造方法:無參、帶參
			成員方法:getXxx()/setXxx();teach();
		基礎班老師:
			繼承自老師類
			重寫講課方法
		就業班老師:
			繼承自老師類
			重寫講課方法
*/

//定義抽象老師類
abstract class Teacher{
	//姓名
	private String name;
	//年齡
	private int age;
	
	public Teacher(){}
	
	public Teacher(String name,int age){
		this.name = name;
		this.age = age;
	}
	
	public String getName(){
		return name;
	}
	
	public void setName(String name){
		this.name = name;
	}
	
	public int getAge(){
		return age;
	}
	
	public void setAge(int age){
		this.age = age;
	}
	
	//抽象方法
	public abstract void teach();
}

//定義基礎班老師具體類
class BasicTeacher extends Teacher{
	public BasicTeacher(){}
	
	public BasicTeacher(String name,int age){
		super(name,age);
	}
	
	public void teach(){
		System.out.println("基礎班老師講解JavaSE");
	}
}


//定義就業班老師具體類
class WorkTeacher extends Teacher{
	public WorkTeacher(){}
	
	public WorkTeacher(String name,int age){
		super(name,age);
	}
	
	public void teach(){
		System.out.println("就業班老師講解JavaEE");
	}
}

class AbstractTest2{
	public static void main(String[] args){
		//具體類測試
		//基礎班老師
		//方式1
		BasicTeacher b = new BasicTeacher();
		b.setName("小剛");
		b.setAge(33);
		System.out.println(b.getName()+"---"+b.getAge());
		b.teach();
		System.out.println("-------------------------");
		//方式2
		BasicTeacher b2 = new BasicTeacher("小明",45);
		System.out.println(b2.getName()+"---"+b2.getAge());
		b2.teach();
		System.out.println("-------------------------");
		
		
		//就業班老師
		//方式1
		WorkTeacher wt = new WorkTeacher();
		wt.setName("小剛");
		wt.setAge(33);
		System.out.println(wt.getName()+"---"+wt.getAge());
		wt.teach();
		System.out.println("-------------------------");
		//方式2
		WorkTeacher wt2 = new WorkTeacher("小明",45);
		System.out.println(wt2.getName()+"---"+wt2.getAge());
		wt2.teach();
		System.out.println("-------------------------");
		
		//測試(多型)
		//基礎班老師
		//方式1
		Teacher t = new BasicTeacher();
		t.setName("小剛");
		t.setAge(33);
		System.out.println(t.getName()+"---"+t.getAge());
		t.teach();
		System.out.println("-----------------------------");
		//方式2
		t = new BasicTeacher("小明",45); 
		System.out.println(t.getName()+"---"+t.getAge());
		t.teach();
		System.out.println("-----------------------------");
		
		//就業班老師
		//方式1
		t = new WorkTeacher();
		t.setName("小剛");
		t.setAge(33);
		System.out.println(t.getName()+"---"+t.getAge());
		t.teach();
		System.out.println("-----------------------------");
		//方式2
		t = new WorkTeacher("小明",45);
		System.out.println(t.getName()+"---"+t.getAge());
		t.teach();
	}
}