一、繼承示例
java
1.1 ide
建立Pet(寵物)父類測試
// 建立Pet(寵物)父類 public class Pet { //建立父類私有屬性 private String name; private int age; private int health; private String love; public Pet(){ //System.out.println("父類無參構造方法"); } public Pet(String name,int age,int health,String love){ this.name = name; this.age = age; this.health = health; this.love = love; //System.out.println("父類有參構造方法"); } //get方法 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 int getHealth() { return health; } //set方法 public void setHealth(int health) { this.health = health; } public String getLove() { return love; } public void setLove(String love) { this.love = love; } // 父類中的print(打印)方法 public void print(){ System.out.println(name+"\t"+age+"\t"+health+"\t"+love); } // 父類中的shout(叫聲)方法 public void shout(){ System.out.println("寵物的叫聲!"); } }
建立Dog(寵物>狗)子類extends關鍵字ui
// 建立Dog(寵物>狗)子類繼承父類Pet public class Dog extends Pet { // 狗類特有的strain(品種)屬性 public String strain; public Dog() { // System.out.println("子類無參構造方法"); } public Dog(String name, int age, int health, String love,String strain) { // super關鍵字:引用父類中的屬性 super(name, age, health, love); this.strain = strain; // System.out.println("子類有參構造方法"); } // 子類get方法 public String getStrain() { return strain; } // 子類set方法 public void setStrain(String strain) { this.strain = strain; } // 父類print方法重寫 public void print(){ System.out.println(super.getName()+"\t"+super.getAge()+"\t"+super.getHealth()+"\t"+super.getLove()+"\t"+strain); } // 父類shout方法重寫 // public void shout(){ // // System.out.println("名叫"+this.getName()+"小狗汪汪的叫聲!"); // // } // }
// 建立PetDemo測試類this
public class PetDemo { public static void main(String[] args) { Dog dog = new Dog("旺財", 2, 100, "友愛", "泰迪"); // // dog.setName("旺財"); // // dog.strain="泰迪"; // // dog.setAge(2); // // dog.setHealth(100); // // dog.setLove("友愛"); // // System.out.println(dog.getName() + "\t" + dog.strain + "\t" // // + dog.getAge() + "\t" + dog.getHealth() + "\t" + dog.getLove()); dog.print(); // Penguin penguin = new Penguin(); // Pet pet1 = new Dog(); // Pet pet2 = new Penguin(); // pet1.shout(); // pet2.shout(); // Petshop petshop = new Petshop(); // Pet pet3 = petshop.BuyPet(); // pet3.shout(); // if(pet3 instanceof Dog){ // Dog dog1 = (Dog)pet3; // System.out.println(dog1.getStrain()); // }else{ // Penguin penguin1 = (Penguin)pet3; // System.out.println(penguin1.getSex()); // } // Pet dog = new Dog("旺財",12,100,"友愛","泰迪"); // // dog.shout(); // } }
結果驗證一:spa
旺財2100友愛泰迪orm
結果驗證二:去掉Dog類中super();中內容
對象
null00null泰迪繼承
二、多態示例一get
「+」:能夠表示加法運算符;能夠表示拼接運算符。
2.1
//建立Pet(寵物)父類 public class Pet { //建立父類私有屬性 private String name; private int age; private int health; private String love; public Pet(){ //System.out.println("父類無參構造方法"); } public Pet(String name,int age,int health,String love){ this.name = name; this.age = age; this.health = health; this.love = love; //System.out.println("父類有參構造方法"); } //get方法 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 int getHealth() { return health; } //set方法 public void setHealth(int health) { this.health = health; } public String getLove() { return love; } public void setLove(String love) { this.love = love; } // 父類中的print(打印)方法 public void print(){ System.out.println(name+"\t"+age+"\t"+health+"\t"+love); } // 父類中的shout(叫聲)方法 public void shout(){ System.out.println("寵物的叫聲!"); } }
建立Dog(寵物>狗)子類繼承父類Pet
// 建立Dog(寵物>狗)子類繼承父類Pet public class Dog extends Pet { // 狗類特有的strain(品種)屬性 public String strain; public Dog() { // System.out.println("子類無參構造方法"); } public Dog(String name, int age, int health, String love,String strain) { // super關鍵字:引用父類中的屬性 super(name, age, health, love); this.strain = strain; // System.out.println("子類有參構造方法"); } // 子類get方法 public String getStrain() { return strain; } // 子類set方法 public void setStrain(String strain) { this.strain = strain; } // 父類print方法重寫 // // public void print(){ // // System.out.println(super.getName()+"\t"+super.getAge()+"\t"+super.getHealth()+"\t"+super.getLove()+"\t"+strain); // } // 父類shout方法重寫 public void shout(){ System.out.println("名叫"+this.getName()+"小狗汪汪的叫聲!"); } }
// 建立PetDemo測試類
public class PetDemo { public static void main(String[] args) { // Dog dog = new Dog("旺財",2,100,"友愛","泰迪"); //dog.setName("旺財"); //dog.strain="泰迪"; //dog.setAge(2); //dog.setHealth(100); //dog.setLove("友愛"); // System.out.println(dog.getName()+"\t"+dog.strain+"\t"+dog.getAge()+"\t"+dog.getHealth()+"\t"+dog.getLove()); // dog.print(); // Penguin penguin = new Penguin(); // Pet pet1 = new Dog(); // Pet pet2 = new Penguin(); // pet1.shout(); // pet2.shout(); // Petshop petshop = new Petshop(); // Pet pet3 = petshop.BuyPet(); // pet3.shout(); // if(pet3 instanceof Dog){ // Dog dog1 = (Dog)pet3; // System.out.println(dog1.getStrain()); // }else{ // Penguin penguin1 = (Penguin)pet3; // System.out.println(penguin1.getSex()); // } Pet dog = new Dog("旺財",12,100,"友愛","泰迪"); dog.shout(); } }
結果驗證:
名叫旺財小狗汪汪的叫聲!
2.2 多態的示例
建立Pet(寵物)父類
//建立Pet(寵物)父類 public class Pet { //建立父類私有屬性 private String name; private int age; private int health; private String love; public Pet(){ //System.out.println("父類無參構造方法"); } public Pet(String name,int age,int health,String love){ this.name = name; this.age = age; this.health = health; this.love = love; //System.out.println("父類有參構造方法"); } //get方法 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 int getHealth() { return health; } //set方法 public void setHealth(int health) { this.health = health; } public String getLove() { return love; } public void setLove(String love) { this.love = love; } // 父類中的print(打印)方法 public void print(){ System.out.println(name+"\t"+age+"\t"+health+"\t"+love); } // 父類中的shout(叫聲)方法 public void shout(){ System.out.println("寵物的叫聲!"); } }
建立Dog(寵物>狗)子類繼承父類Pet
// 建立Dog(寵物>狗)子類繼承父類Pet public class Dog extends Pet { // 狗類特有的strain(品種)屬性 public String strain; public Dog() { // System.out.println("子類無參構造方法"); } public Dog(String name, int age, int health, String love,String strain) { // super關鍵字:引用父類中的屬性 super(name, age, health, love); this.strain = strain; // System.out.println("子類有參構造方法"); } // 子類get方法 public String getStrain() { return strain; } // 子類set方法 public void setStrain(String strain) { this.strain = strain; } // 父類print方法重寫 // // public void print(){ // // System.out.println(super.getName()+"\t"+super.getAge()+"\t"+super.getHealth()+"\t"+super.getLove()+"\t"+strain); // } // 父類shout方法重寫 public void shout(){ System.out.println("名叫"+this.getName()+"小狗汪汪的叫聲!"); } }
建立Penguin(寵物>企鵝)類
// 建立Penguin(寵物>企鵝)類 public class Penguin extends Pet{ // 企鵝sex(性別)特有屬性 public String sex; // 子類get方法 public String getSex() { return sex; } // 子類set方法 public void setSex(String sex) { this.sex = sex; } // 父類shout方法重寫 public void shout(){ System.out.println("名叫"+this.getName()+"企鵝喵喵的叫聲!"); } }
建立Petshop(提供購買的方法)類
//建立Petshop(提供購買的方法)類 import java.util.Scanner; public class Petshop { // 建立BuyPet方法 public Pet BuyPet(){ // 定義pet變量的初始值爲null(空) Pet pet = null; // 提示用戶的輸入數字 System.out.println("請輸入您要購買的寵物:1.小狗 2.小企鵝"); // 獲取用戶的輸入存取到buypet變量中 Scanner input = new Scanner(System.in); int buyPet = input.nextInt(); // switch判斷用戶輸入數字 switch(buyPet){ case 1://當用戶輸入數字1,則寵物爲小狗 pet = new Dog("旺財",2,100,"友愛","泰迪"); break; case 2://當用戶輸入數字2,則寵物爲小企鵝 pet = new Penguin(); break; default: break; } return pet; } }
建立PetDemo測試類
//建立PetDemo測試類 public class PetDemo { public static void main(String[] args) { // Dog dog = new Dog("旺財",2,100,"友愛","泰迪"); //dog.setName("旺財"); //dog.strain="泰迪"; //dog.setAge(2); //dog.setHealth(100); //dog.setLove("友愛"); // System.out.println(dog.getName()+"\t"+dog.strain+"\t"+dog.getAge()+"\t"+dog.getHealth()+"\t"+dog.getLove()); // dog.print(); // Penguin penguin = new Penguin(); // Pet pet1 = new Dog(); // Pet pet2 = new Penguin(); // pet1.shout(); // pet2.shout(); Petshop petshop = new Petshop(); // 調用子類方法重寫父類 Pet pet3 = petshop.BuyPet(); // 實現寵物叫聲的多態,抽象父類的引用指向子類的對象,實現多態 pet3.shout(); // if(pet3 instanceof Dog){ // // Dog dog1 = (Dog)pet3; // // System.out.println(dog1.getStrain()); // // }else{ // // Penguin penguin1 = (Penguin)pet3; // // System.out.println(penguin1.getSex()); // // } // // Pet dog = new Dog("旺財",12,100,"友愛","泰迪"); // // dog.shout(); // } }
結果驗證一:
請輸入您要購買的寵物:1.小狗 2.小企鵝
1
名叫旺財小狗汪汪的叫聲!
結果驗證二:
請輸入您要購買的寵物:1.小狗 2.小企鵝
2
名叫null企鵝喵喵的叫聲!
三、instanceof關鍵字
此關鍵字訪問子類中特有的屬性
public class PetDemo { public static void main(String[] args) { // Dog dog = new Dog("旺財",2,100,"友愛","泰迪"); //dog.setName("旺財"); //dog.strain="泰迪"; //dog.setAge(2); //dog.setHealth(100); //dog.setLove("友愛"); // System.out.println(dog.getName()+"\t"+dog.strain+"\t"+dog.getAge()+"\t"+dog.getHealth()+"\t"+dog.getLove()); // dog.print(); // Penguin penguin = new Penguin(); // Pet pet1 = new Dog(); // Pet pet2 = new Penguin(); // pet1.shout(); // pet2.shout(); Petshop petshop = new Petshop(); // 調用子類方法重寫父類 Pet pet3 = petshop.BuyPet(); // 實現寵物叫聲的多態,抽象父類的引用指向子類的對象,實現多態 pet3.shout(); if(pet3 instanceof Dog){ Dog dog1 = (Dog)pet3; System.out.println(dog1.getStrain()); }else{ Penguin penguin1 = (Penguin)pet3; System.out.println(penguin1.getSex()); } // Pet dog = new Dog("旺財",12,100,"友愛","泰迪"); // // dog.shout(); // } }
結果驗證一:
請輸入您要購買的寵物:1.小狗 2.小企鵝
1
名叫旺財小狗汪汪的叫聲!
泰迪
結果驗證二:
請輸入您要購買的寵物:1.小狗 2.小企鵝
2
名叫null企鵝喵喵的叫聲!
null