面向物件_抽象類練習貓狗案例
阿新 • • 發佈:2019-02-11
/* 貓狗案例: 具體事物:貓、狗 共性:姓名、年齡、吃飯 分析:從具體到抽象 貓: 成員變數:姓名、年齡 構造方法:無參、帶參 成員方法:吃飯(貓吃魚) 狗: 成員變數:姓名、年齡 構造方法:無參、帶參 成員方法:吃飯(狗吃肉) 因為有共性的內容,所以提取了一個父類。動物。 但是又由於吃飯的內容不一樣,所以吃飯的方法是抽象的, 而方法是抽象的,類就必須定義為抽象類。 抽象動物類: 成員變數:姓名、年齡 構造方法:無參、帶參 成員方法:getXxx()/setXxx(),吃飯();//抽象方法 實現:從抽象到具體 動物類: 成員變數:姓名、年齡 構造方法:無參、帶參 成員方法:getXxx()/setXxx(),吃飯();//抽象方法 貓類: 繼承自動物類 重寫吃飯方法; 狗類: 繼承自動物類 重寫吃飯方法; */ //定義抽象動物類 abstract class Animal{ //姓名 private String name; //年齡 private int age; //定義無參 public Animal(){} //定義帶參 public Animal(String name,int age){ this.name = name; this.age = age; } //定義getXxx(),setXxx() 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(2); System.out.println(d.getName()+"---"+d.getAge()); d.eat(); System.out.println("-------------------------"); //方式2 Dog d2 = new Dog("小哈",3); System.out.println(d2.getName()+"---"+d2.getAge()); d2.eat(); System.out.println("-------------------------"); //建立多型狗類物件(如果,該程式要擴充套件就使用多型) //方式1 Animal a = new Dog(); a.setName("小金"); a.setAge(2); System.out.println(a.getName()+"---"+a.getAge()); a.eat(); System.out.println("-------------------------"); //方式2 Animal a2 = new Dog("小哈",3); System.out.println(a2.getName()+"---"+a2.getAge()); a2.eat(); System.out.println("-------------------------\n\n\n"); //建立具體貓類物件 //方式1 Cat c = new Cat(); c.setName("喵喵"); c.setAge(2); System.out.println(c.getName()+"---"+c.getAge()); c.eat(); System.out.println("-------------------------"); //方式2 Cat c2 = new Cat("小黃",3); System.out.println(c2.getName()+"---"+c2.getAge()); c2.eat(); System.out.println("-------------------------"); //建立多型貓類物件(如果,該程式要擴充套件就使用多型) //方式1 Animal a3 = new Cat(); a3.setName("喵喵"); a3.setAge(2); System.out.println(a3.getName()+"---"+a3.getAge()); a3.eat(); System.out.println("-------------------------"); //方式2 Animal a4 = new Cat("小黃",3); System.out.println(a4.getName()+"---"+a4.getAge()); a4.eat(); } }