编程其实就是一个将具象世界进行抽象化(Abstraction)的过程, 多态就是抽象化的一种体现.多态, 我认为就是把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话.比如, 你的老板让所有员工在九点钟开始工作, 他只要在九点钟的时候说"开始工作"即可, 而不需要对销售人员说"开始销售工作", 对技术人员说"开始技术工作", 因为"员工"是一个抽象的事物, 只要是员工就可以开始工作, 他知道这一点就行了. 至于每个员工, 当然会各司其职, 做各自的工作. 这就是多态.

解决方案 »

  1.   

    顶!请大家看一下这个程序:
    import java.util.*;public class IteratorTest
    {
    public static void main(String[] args)
    {
    Book b1 = new Book("isbn-7-111","Thinking in Java","Bruce Eckel");
    Book b2 = new Book("isbn-7-5382","The Moments","Jimmy");
    Book b3 = new Book("isbn-7-5004","Class","Paul Fussell");
    Book b4 = new Book("isbn-7-5600","The Scarlet Letter","Nathaniel Hawthorne");
    Book b5 = new Book("isbn-7-5611","The Portrait Of a Lady","Henry James");
    Book b6 = new Book("isbn-7-302-06986-7","Programming With J2me","Alex Wen");

    ArrayList al = new ArrayList();
    al.add(b1);
    al.add(b2);
    al.add(b3);
    al.add(b4);
    al.add(b5);
    al.add(b6);

    Iterator iterator = al.iterator();
    while(iterator.hasNext())
    {
    System.out.println((Book)iterator.next());

    }
    }
    }
    class Book
    {
    private String isbn,title,author;
    public Book(String isbn,String title,String author)
    {
    this.isbn = isbn;
    this.title = title;
    this.author = author;
    }
    public String getIsbn()
    {
    return isbn;
    }
    public String getTitle()
    {
    return title;
    }
    public String getAuthor()
    {
    return author;
    }

    public String toString()
    {
    return"[isbn="+isbn+",title="+title+",author="+author+"]";
    }
    } 这是新东方教程上的例子,关于集合的。我的问题也是关于多态的问题:
    1:这一句:ArrayList al = new ArrayList();//1
    我写成List a1 = new ArrayList();//2
    也可以实现同样功能。原理我明白,是将子类直接转换成父类,但在实际工作中,在什么情况下用1什么情况下用2呢?
    2:System.out.println((Book)iterator.next());//1
    我写成System.out.println(iterator.next());//2
    也可以完成同样的功能。我明白iterator.next()返回的是一个object对象,由于返回的对象是基于Book类的,所以做了一个强制转换。但是如果我去掉(Book),不也是一个String对象吗,也是object的子类啊?请高手帮助一下吧!