A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 纤路 中级黑马   /  2016-1-29 23:52  /  547 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马