您的位置:首页 > 编程语言 > Java开发

Java细节01——类与接口,继承与实现

2013-09-03 23:56 375 查看



Java细节01——类与接口,继承与实现

就我们通常所知的——
类可以继承类,类可以实现接口,接口可以继承接口。
这些知识,没有任何特别,如下所示:

class A{
//一个类
}
interface AA{
//一个接口
}
class B extends A{
//一个类【继承】另一个类
}
class C implements AA{
//一个类【实现】一个接口
}
interface BB extends AA{
//一个接口【继承】一个接口
}
class D extends A implements AA{
//一个类【继承】一个类,同时【实现】一个接口
}
interface CC extends AA,BB{
//一个接口【继承】多个接口
}


(1)一个接口可以实现一个接口么?
标准Java中是不可以的,eclipse也会报错,但是在android提供的开发者文档中,确实有这样的情况存在。
//Java7手册中的ListIterator接口

public interface ListIterator<E> extends Iterator<E>

//Google Android Develop中描述
public interface ListIterator implements Iterator<E>


但是,事实上,在源码中使用的仍然是extends 而不是implements;
或许,此处可做进一步解读。
从第一个问题中,我们发现了一个新的领域,那么具有泛型的类又是怎样的呢?

//类 与接口:泛型篇
public class Test2 {

}

class A2<E>{
//使用泛型的类
}

class B2<E extends Number>{
//
}

class C2 extends A2{
//Warning:A2 is a raw type. References to generic type A2<E> should be parameterized
//编译器:A2 是原始类型. 泛型 A2<E>的引用应该被参数化
}

class D2<T> extends A2<T>{
//正确,泛型与名字无关
}

class E2 extends A2<E>{
//编译出错:E cannot be resolved to a type
//编译器:E 不能是一个类型
/* 此处解决方法有二种:
* 一种是对E2加上泛型描述符,
* 另一种是创建E的类,而这种方式实际上就是对于泛型的实现了
* 例如:class _E2 extends A2<Object>{}
* 是可以通过编译的。
*/
}

class F2<E> extends A2{
//这个与C2的情况一样
}

class G2<T> extends A2<E>{
//这是错误的情况,因为E丢失了
}

class _G2<T> extends A2<String>{
//同样的道理(见E2),这样却是可以的
}

class H2<E,T> extends A2<E>{
//泛型的扩充,也是可以的
}

/*-------------------------------------*/
class I2<E> extends B2<Number>{
//这也是实现+新泛型
}

class J2<T extends Number> extends B2<T>{

}


还有很多可以挖掘的地方,不过那应该在泛型的研究中去深挖,而此处就点到为止了...
接口的话,这里是类似的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐