Java 我们可以不使用import语句访问内置类吗
我创建了一个类异常,知道已经存在一个具有相同名称的内置子类,如下所示:Java 我们可以不使用import语句访问内置类吗,java,Java,我创建了一个类异常,知道已经存在一个具有相同名称的内置子类,如下所示: class Exception { public static void main(String args[]) { int i=8; try{ int a = args.length; int g = i/a; } catch(ArithemticException e){ System.
class Exception {
public static void main(String args[]) {
int i=8;
try{
int a = args.length;
int g = i/a;
} catch(ArithemticException e){
System.out.println("here is the error:"+e);
}
}
}
class Except7 {
static int h;
public static void main(String args[]) {
try{
int h = 9 / 0;
System.out.println("//");
} catch(ArithmeticException e) {
h = 4;
System.out.println(h);
} catch(Exception e) {
System.out.println("h");
}
}
}
正如您可能已经注意到的,我在前面的代码中编写了错误的“算术”拼写,因此编译器显示了一个错误,它无法找到此符号算术异常。
我所做的是,我没有改变这里的拼写,而是写了另一个代码——后者。在这里,我写了正确的算术拼写,并尝试编译它。它给了我两个错误:
需要不兼容的类型:找到可丢弃的:异常
找不到SymbolarItemException.java
我的疑问是:
我们怎么能如此轻松地更改一个内置的异常类?是因为它是一个抽象类吗
即使我可以直接访问它,也就是说。在没有使用“import”语句的情况下,我不打算更改exception ArithemticException的名称。我只是把它放在一个“捕获”语句中。那么,为什么其他没有“import”语句的程序能够访问它呢。
我也没有创建任何包,可以说它们是受包保护的
以前的程序没有编译,还有其他程序出现了“找不到符号”的错误
我们如何能如此轻松地更改内置的异常类
你不能
发生的情况是,您自己的类异常在导入时没有任何显式的导入语句,因为它与Except7位于同一个包中。因此,在编译Except7时,编译器使用yourPackage.Exception,而不是java.lang.Exception
另见:
一个软件包由多个编译单元组成§7.3。编译单元自动访问其包中声明的所有类型,并自动导入预定义包java.lang中声明的所有公共类型
另请参见O.K!所以,它转到我当前的目录,它的行为就像我保存在那里的所有程序的默认包。是的,确切地说,是包,而不是目录。另一方面,不要使用默认的包-总是把你的类放在一个具体的包中。所以,实际上阴影正在发生!