首先、java中接口跟类是两个并行的概念,所有类都继承Object,但接口是接口,不继承Object,接口只能继承某一接口,但某个类可以实现接口(多个接口)。
其次、接口是一系列方法声明的开放集合,即所有实现了该接口的类都具备该接口公开的方法,通常为了隐藏实现以及程序的可拓展性用到接口,因为在所有可以使用接口的地方都可以使用它的实现类来替换。
再次、你程序中Test test =(Test) a; 也不是正确的,只是骗过了编译器可以编译通过,但是一旦解释执行便会报类型转换错误,为什么会编译通过呢,以为你是将一个接口类型转换为某种类型,但接口类型在运行时都会被实现类替换,而编译器无法判断你此时被转型的接口的具体实现类是什么,所以它不会阻止你这样转型。而Test test1 = (Test) b,编译器便不能允许你将类型B转型为类型A。 |
|