关于java import的一点疑问
在使用import导入指定包的类时,不知道为什么导入无法嵌套呢?比如说存在3个类:A.CLASS、B.CLASS、C.CLASS,在C.CLASS中存在fn(A a)的方法定义,那么在C.CLASS中就需要首先import A(假设存在一个包中),指定方法fn参数列表中A的类型。此时为什么不能嵌套声明呢?比如说在B.CLASS中import A,然后在C.CLASS中执行import B,那么根据嵌套的情况应该可以找到类A呀?在C/C++中include中不知道是否可以通过include来实现嵌套声明呢?即在C中include "B.h",在B中include "A.h",因为include应该可以是将所有的.h的方法全部导入到当前文件中吧?不知道两者存在什么区别呢?感谢各位大虾指教。
------解决方案--------------------先搞清楚java的包加载机制
------解决方案--------------------java的import和C/C++的#include完全是两回事,它更像是C++的using namespace,就是说,它只是一个名称空间的引用,不是代码包含,也没有预编译动作,正因为这样,import只对当前编译单元有效,不可能“嵌套”。
另外,JAVA完全不需要#inclucde,因为无论是编译时还是运行时,java都会根据classpath中定义的路径"动态地"去寻找所需的声明和定义。
------解决方案--------------------2楼说得不错,在java当中,使用import关键字只是提供了一个管理名字空间的机制,用来解决名字之间的潜在冲突等问题,而不是代码包含和复制。打个比方:比如你在A.java的开始处这样写 package mypackage就表示A.java是名为mypackage的程序库的一部分,或者说,A.class是位于mypackage名称的保护伞之下,任何想使用该名称的人都必须指定全名或者与导入mypackage.
------解决方案--------------------不错!
------解决方案--------------------学到一点
------解决方案--------------------只要你用外部的类,就要导入那个包,如果不是你直接使用的类,就不用导入包,
------解决方案--------------------如果继承一下就不用导包了.