李順利
          隨筆-50  評論-170  文章-0  trackbacks-0

          這篇博文不說很多,直接上代碼。

          import java.util.ArrayList;
          
          import java.util.List;
          
          /**
          
           *
          
           * @author ShunLi
          
           */
          
          public class ExtendTest {
          
              public static void main(String[] args) {
          
                  List<Person> pList = new ArrayList<Person>();
          
                  pList.add(new Person());
          
                  pList.add(new Person());
          
                  List<Animal> aList = new ArrayList<Animal>();
          
                  aList.add(new Animal());
          
                  doSomething(pList);
          
                  doSomething(aList);
          
              }
          
              static void doSomething(List<? extends Base> obj){
          
                  for (Base base : obj) {
          
                      base.doSomething();
          
                  }
          
              }
          
          }
          
          interface Base{
          
               void doSomething();
          
          }
          
          class Person  implements Base{
          
              public void doSomething() {
          
                  System.out.println("Person");
          
              }
          
          }
          
          class Animal implements Base{
          
              public void doSomething() {
          
                  System.out.println("Animal");
          
              }
          
          }
          
          ////////////////////////////////////////////////////////////////
          
          import java.util.ArrayList;
          
          import java.util.List;
          
          /**
          
           *
          
           * @author ShunLi
          
           */
          
          abstract class Base {
          
              abstract void doSomething();
          
          }
          
          class Person extends Base {
          
              public void doSomething() {
          
                  System.out.println("Person");
          
              }
          
          }
          
          class Animal extends Base {
          
              public void doSomething() {
          
                  System.out.println("Animal");
          
              }
          
          }
          
          public class ExtendTest2 {
          
              public static void main(String[] args) {
          
                  List<Person> pList = new ArrayList<Person>();
          
                  pList.add(new Person());
          
                  pList.add(new Person());
          
                  List<Animal> aList = new ArrayList<Animal>();
          
                  aList.add(new Animal());
          
                  doSomething(pList);
          
                  doSomething(aList);
          
              }
          
              static void doSomething(List<? extends Base> obj) {
          
                  for (Base base : obj) {
          
                      base.doSomething();
          
                  }
          
              }
          
          }
          
          ////////////////////////////////////////////////////////////////
          
          import java.util.ArrayList;
          
          import java.util.Arrays;
          
          import java.util.Collections;
          
          import java.util.List;
          
          /**
          
           *
          
           * @author ShunLi
          
           */
          
          abstract class Base {
          
              abstract void doSomething();
          
          }
          
          class Person extends Base {
          
              public void doSomething() {
          
                  System.out.println("Person");
          
              }
          
          }
          
          class Animal extends Base {
          
              public void doSomething() {
          
                  System.out.println("Animal");
          
              }
          
          }
          
          public class ExtendTest3 {
          
              public static void main(String[] args) {
          
                  List<Base> bases = new ArrayList<Base>();
          
                  bases.addAll(getPersons());
          
                  doSomething(bases);
          
                  bases.clear();
          
                  bases.addAll(getAnimals());
          
                  doSomething(bases);
          
                  doSomething(Arrays.<Base> asList(new Person(), new Animal()));
          

          doSomething(Arrays.asList(new Person(), new Animal()));

                  bases.clear();
          
                  Collections.addAll(bases, new Person(), new Animal());
          
                  doSomething(bases);
          
              }
          
              private static List<Animal> getAnimals() {
          
                  List<Animal> aList = new ArrayList<Animal>();
          
                  aList.add(new Animal());
          
                  return aList;
          
              }
          
              private static List<Person> getPersons() {
          
                  List<Person> pList = new ArrayList<Person>();
          
                  pList.add(new Person());
          
                  pList.add(new Person());
          
                  return pList;
          
              }
          
              static void doSomething(List<Base> obj) {
          
                  for (Base base : obj) {
          
                      base.doSomething();
          
                  }
          
              }
          
          }
          

          得出一些結論(個人體會,不保證正確):

          1. 抽象類抽象方法和接口差不多,而且個人以前沒有理解過的是在 ExtendTest中,也可以使用List<implement> –> List<? extends Base>,接口還是可以理解成繼承的;

          2. ExtendTest3 中 Arrays.<Base> asList(new Person(), new Animal()) 這種寫法還是從 《Thinking In Java》看到的,當然你可以忽略中間<Base>這樣的書寫;

          3. 其它。

           

          順利寫于2011年10月28日



          博客中的一些下載已經放到了百度云了,請根據需要下載。【點我去百度云下載】

          最后弱弱地說一下,如果可以的話,轉載請提供出處( ),謝謝。
          posted on 2011-10-28 23:41 李順利 閱讀(624) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 汕头市| 大厂| 阿拉善左旗| 城固县| 定兴县| 吴旗县| 泾川县| 勃利县| 潼关县| 景谷| 萝北县| 汕尾市| 比如县| 于田县| 兴海县| 万荣县| 安吉县| 金坛市| 木里| 应用必备| 时尚| 漾濞| 东兴市| 阳西县| 搜索| 丰顺县| 泉州市| 温泉县| 黄大仙区| 曲靖市| 调兵山市| 海晏县| 安新县| 山东省| 浪卡子县| 临高县| 洞口县| 永清县| 曲阳县| 新密市| 钟山县|