一個例子理解java面向?qū)ο蟮臋C制
//定義Gun類 public abstract class Gun { protected String name; // 帶參數(shù)的構(gòu)造方法,特殊的方法,名字必須與類名相同 public Gun() { public Gun(String name) { this.name = name; // 構(gòu)造抽象方法,并在子類中繼承和定義。 abstract void sound(); public String getName() { return name; public void setName(String name) { this.name = name; //Carbine繼承自Gun public class Carbine extends Gun { //帶參數(shù)的構(gòu)造方法,特殊的方法,名字必須與類名相同 public Carbine(String name) { this.name = name; //Gun類下不同的子類擁有同名的sound()方法,但是內(nèi)容不同,在調(diào)用sound()方法時會根據(jù)具體的Gun而自動調(diào)用相應(yīng)的方法。 //這用到了Java的多態(tài)性。 void sound() http://www.huiyi8.com/jiaoben/ // TODO Auto-generated method stub System.out.println("DaDaDa!"); javascript特效 //Rifle繼承自Gun public class Rifle extends Gun { //帶參數(shù)的構(gòu)造方法,是特殊的方法,名字必須與類名相同 public Rifle(String name) { this.name = name; //Gun類下不同的子類擁有同名的sound()方法,但是內(nèi)容不同,在調(diào)用sound()方法時會根據(jù)具體的Gun而自動調(diào)用相應(yīng)的方法。 //這用到了Java的多態(tài)性。 void sound() { // TODO Auto-generated method stub System.out.println("Peng! Peng! Peng!"); //定義Person類 public class Person { private String name; public String getName() { return name; public void setName(String name) { this.name = name; // 體現(xiàn)多態(tài)性。 public void shoot(Person p, Gun g) { System.out.println(this.name + " shoot\t" + p.getName() + " using a " + g.getName()); g.sound(); //在main()函數(shù)中測試 public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Person p1 = new Person(); Person p2 = new Person(); p1.setName("XiaoWang"); p2.setName("XiaoLi"); Rifle r = new Rifle("rifle"); Carbine c = new Carbine("carbine"); // 將方法的調(diào)用和實現(xiàn)分離,已達到封裝的效果。 p1.shoot(p2, r); p1.shoot(p2, c); |
posted on 2014-08-14 09:30 順其自然EVO 閱讀(189) 評論(0) 編輯 收藏 所屬分類: 測試學(xué)習(xí)專欄