1. 程式人生 > >抽象類貓狗案例

抽象類貓狗案例

java 抽象類貓狗案例

/*
	貓狗案例
		具體事物:貓,狗
		共性:姓名,年齡,吃飯

	分析:從具體到抽象
		貓:
			成員變數:姓名,年齡
			構造方法:無參,帶參
			成員方法:吃飯(貓吃魚)
			
		狗:
			成員變數:姓名,年齡
			構造方法:無參,帶參
			成員方法:吃飯(狗吃肉)
			
		因為有共性的內容,所以就提取了一個父類。動物。
		但是又由於吃飯的內容不一樣,所以吃飯的方法是抽象的,
		而方法是抽象的類,類就必須定義為抽象類。
		
		抽象動物類:
			成員變數:姓名,年齡
			構造方法:無參,帶參
			成員方法:吃飯();
	
	實現:從抽象到具體
		動物類:
			成員變數:姓名,年齡
			構造方法:無參,帶參
			成員方法:吃飯();
			
		狗類:
			繼承自動物類
			重寫吃飯();
			
		貓類:
			繼承自動物類
			重寫吃飯();
*/
//定義抽象的動物類
abstract class Animal {
	//姓名
	private String name;
	//年齡
	private int age;
	
	public Animal() {}
	
	public Animal(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 eat();
}

//定義具體的狗類
class Dog extends Animal {
	public Dog() {}
	
	public Dog(String name,int age) {
		super(name,age);
	}
	
	public void eat() {
		System.out.println("狗吃肉");
	}
}

//定義具體的貓類
class Cat extends Animal {
	public Cat() {}
	
	public Cat(String name,int age) {
		super(name,age);
	}
	
	public void eat() {
		System.out.println("貓吃魚");
	}
}

//測試類
class AbstractTest {
	public static void main(String[] args) {
		//測試狗類
		//具體類用法
		//方式1:
		Dog d = new Dog();
		d.setName("旺財");
		d.setAge(3);
		System.out.println(d.getName()+"---"+d.getAge());
		d.eat();
		//方式2:
		Dog d2 = new Dog("旺財",3);
		System.out.println(d2.getName()+"---"+d2.getAge());
		d2.eat();
		System.out.println("---------------------------");
		
		Animal a = new Dog();
		a.setName("旺財");
		a.setAge(3);
		System.out.println(a.getName()+"---"+a.getAge());
		a.eat();
		
		Animal a2 = new Dog("旺財",3);
		System.out.println(a2.getName()+"---"+a2.getAge());
		a2.eat();
		
		//練習:測試貓類
	}
}