Java的类库
接口List是这样声明的:
请问为什么要把addAll(),方法声明为抽象public interface List extends Collection {
// Positional Access
Object get(int index);
Object set(int index, Object element); // Optional
void add(int index, Object element); // Optional
Object remove(int index); // Optional
abstract boolean addAll(int index, Collection c); // Optional // Search
int indexOf(Object o);
int lastIndexOf(Object o); // Iteration
ListIterator listIterator();
ListIterator listIterator(int index); // Range-view
List subList(int from, int to);
}
接口List是这样声明的:
请问为什么要把addAll(),方法声明为抽象public interface List extends Collection {
// Positional Access
Object get(int index);
Object set(int index, Object element); // Optional
void add(int index, Object element); // Optional
Object remove(int index); // Optional
abstract boolean addAll(int index, Collection c); // Optional // Search
int indexOf(Object o);
int lastIndexOf(Object o); // Iteration
ListIterator listIterator();
ListIterator listIterator(int index); // Range-view
List subList(int from, int to);
}
因此,在代码实现中,为了能在实现了这个接口的前提下定义实体类就必须实现所有基类中的抽象成员(包括自定义的抽象成员),这样就达到了对功能类的基本设计,当然类的扩展一般都是不可预测的
所以在父类中是没有必要详细的写出这个方法的实体(所以干脆把他定义为abstract)在这里也可以同样理解把
interface a
{
void foo() ;
abstract void bar();
}
$ javac a.java
$ javap a
Compiled from a.java
interface interface a extends java.lang.Object
{
public abstract void foo();
public abstract void bar();
}如何?
纯抽象类:如果一个抽象类里只有常量和public类型的方法的抽象类,叫纯抽象类。
用处:
定义相关类的共同行为,而不需要考虑这些类之间的层次关系。
可以指明多个类需要实现的方法。
揭示一个编程界面,而不揭示类体,通过接口列表可以是实现多重继承。
public interface List extends java.util.Collection
/* ACC_SUPER bit NOT set */
{
public abstract java.lang.Object get(int);
public abstract java.lang.Object set(int, java.lang.Object);
public abstract void add(int, java.lang.Object);
public abstract java.lang.Object remove(int);
public abstract boolean addAll(int, java.util.Collection);
public abstract int indexOf(java.lang.Object);
public abstract int lastIndexOf(java.lang.Object);
public abstract java.util.ListIterator listIterator();
public abstract java.util.ListIterator listIterator(int);
public abstract List subList(int, int);
}这是我javap后的结果,其实还是java.sun.com上的这人说的清楚啊