李順利
          隨筆-50  評(píng)論-170  文章-0  trackbacks-0

          這篇博文不說(shuō)很多,直接上代碼。

          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();
          
                  }
          
              }
          
          }
          

          得出一些結(jié)論(個(gè)人體會(huì),不保證正確):

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

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

          3. 其它。

           

          順利寫(xiě)于2011年10月28日



          博客中的一些下載已經(jīng)放到了百度云了,請(qǐng)根據(jù)需要下載。【點(diǎn)我去百度云下載】

          最后弱弱地說(shuō)一下,如果可以的話,轉(zhuǎn)載請(qǐng)?zhí)峁┏鎏? ),謝謝。
          posted on 2011-10-28 23:41 李順利 閱讀(624) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 池州市| 尖扎县| 乐至县| 镇安县| 瓮安县| 黄平县| 广水市| 滁州市| 沐川县| 霍州市| 旺苍县| 乌拉特后旗| 兴安县| 舒城县| 盱眙县| 介休市| 彩票| 甘谷县| 库尔勒市| 六盘水市| 绵阳市| 长寿区| 望江县| 宁河县| 云龙县| 遂昌县| 宁武县| 湄潭县| 多伦县| 湟中县| 太仓市| 楚雄市| 海兴县| 南阳市| 海晏县| 呼和浩特市| 美姑县| 玉树县| 阿合奇县| 瑞丽市| 苍溪县|