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

本文深入探讨Java中的类与接口、继承与实现的关系,并结合泛型概念进行详细解析,揭示其在编程实践中的应用与限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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>{
	
}

还有很多可以挖掘的地方,不过那应该在泛型的研究中去深挖,而此处就点到为止了...
接口的话,这里是类似的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值