Java访问权限异常例子
时间: 2023-03-20 12:01:17 浏览: 168
Java中的访问权限异常通常是指当试图访问另一个类中被声明为私有的变量、方法或构造函数时抛出的异常。例如,如果一个类A中声明了一个私有变量或方法,而另一个类B中尝试访问该变量或方法,则会引发访问权限异常。下面是一个简单的示例代码:
```
public class A {
private int x;
public int getX() {
return x;
}
}
public class B {
public static void main(String[] args) {
A a = new A();
int x = a.x; // 编译错误:x在A中是私有的,无法访问
}
}
```
在这个示例中,类B中尝试访问类A中的私有变量x,但由于x的访问权限是私有的,所以会在编译时抛出访问权限异常。为了解决这个问题,可以在类A中提供一个公共的访问方法getX(),通过调用该方法来获取变量x的值。
相关问题
Java每个关键字的作用以及Java程序的例子
Java关键字是指在Java编程语言中具有特殊含义的单词。以下是Java关键字及其作用:
1. abstract:用于声明抽象类或抽象方法。
例子:abstract class Animal { public abstract void makeSound(); }
2. assert:用于断言一个条件是否为真。
例子:assert x > 0 : "x不能为负数";
3. boolean:用于声明布尔类型变量。
例子:boolean isTrue = true;
4. break:用于跳出循环或switch语句。
例子:for (int i = 0; i < 10; i++) { if (i == 5) { break; } System.out.println(i); }
5. byte:用于声明字节类型变量。
例子:byte b = 127;
6. case:用于在switch语句中匹配一个值。
例子:switch (day) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; }
7. catch:用于捕获异常。
例子:try { int result = 10 / 0; } catch (ArithmeticException e) { System.out.println("除数不能为0"); }
8. char:用于声明字符类型变量。
例子:char c = 'A';
9. class:用于声明类。
例子:class Person { private String name; }
10. const:不再使用。
11. continue:用于跳过循环中的当前迭代。
例子:for (int i = 0; i < 10; i++) { if (i == 5) { continue; } System.out.println(i); }
12. default:用于在switch语句中指定默认情况。
例子:switch (day) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; default: System.out.println("未知"); }
13. do:用于执行循环体。
例子:do { System.out.println("Hello"); } while (true);
14. double:用于声明双精度浮点类型变量。
例子:double d = 3.14;
15. else:用于在if语句中指定否则情况。
例子:if (x > 0) { System.out.println("正数"); } else { System.out.println("非正数"); }
16. enum:用于声明枚举类型。
例子:enum Color { RED, GREEN, BLUE }
17. extends:用于指定类的继承关系。
例子:class Student extends Person { private int age; }
18. final:用于声明常量或禁止子类重写方法。
例子:final int MAX_VALUE = 100; final void print() { System.out.println("Hello"); }
19. finally:用于指定无论是否发生异常都要执行的代码。
例子:try { int result = 10 / 0; } catch (ArithmeticException e) { System.out.println("除数不能为0"); } finally { System.out.println("执行完毕"); }
20. float:用于声明单精度浮点类型变量。
例子:float f = 3.14f;
21. for:用于执行循环。
例子:for (int i = 0; i < 10; i++) { System.out.println(i); }
22. goto:不再使用。
23. if:用于执行条件判断。
例子:if (x > 0) { System.out.println("正数"); }
24. implements:用于指定类实现接口。
例子:class Student implements Person { private String name; }
25. import:用于导入类。
例子:import java.util.ArrayList;
26. instanceof:用于判断对象是否为某个类的实例。
例子:if (obj instanceof Person) { System.out.println("是Person的实例"); }
27. int:用于声明整型变量。
例子:int x = 10;
28. interface:用于声明接口。
例子:interface Person { void sayHello(); }
29. long:用于声明长整型变量。
例子:long l = 10000000000L;
30. native:用于声明本地方法。
例子:public native void print();
31. new:用于创建对象。
例子:Person p = new Person();
32. package:用于声明包。
例子:package com.example;
33. private:用于指定私有访问权限。
例子:private String name;
34. protected:用于指定受保护访问权限。
例子:protected int age;
35. public:用于指定公共访问权限。
例子:public void sayHello() { System.out.println("Hello"); }
36. return:用于从方法中返回值。
例子:public int add(int x, int y) { return x + y; }
37. short:用于声明短整型变量。
例子:short s = 32767;
38. static:用于指定静态变量或静态方法。
例子:static int count = 0; static void print() { System.out.println("Hello"); }
39. strictfp:用于指定浮点数计算精度。
例子:public strictfp double add(double x, double y) { return x + y; }
40. super:用于调用父类的方法或构造方法。
例子:super.sayHello();
41. switch:用于执行多重条件判断。
例子:switch (day) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; }
42. synchronized:用于指定同步方法或同步代码块。
例子:public synchronized void print() { System.out.println("Hello"); }
43. this:用于指代当前对象。
例子:public void setName(String name) { this.name = name; }
44. throw:用于抛出异常。
例子:throw new RuntimeException("出错了");
45. throws:用于声明方法可能抛出的异常。
例子:public void readFile() throws IOException { }
46. transient:用于指定变量不参与序列化。
例子:transient int count = 0;
47. try:用于捕获异常。
例子:try { int result = 10 / 0; } catch (ArithmeticException e) { System.out.println("除数不能为0"); }
48. void:用于声明无返回值的方法。
例子:public void sayHello() { System.out.println("Hello"); }
49. volatile:用于指定变量是易变的。
例子:volatile int count = 0;
50. while:用于执行循环。
例子:while (true) { System.out.println("Hello"); }
java java.io.FileNotFoundException: D:\workspace\images\contract (拒绝访问。)
这个错误信息是 Java 中 `java.io.FileNotFoundException` 类型的异常,通常出现在尝试读取文件时发生。在这个特定的例子中,`D:\workspace\images\contract` 是试图打开的文件路径,但它显示 "拒绝访问",这可能意味着以下几个原因:
1. **权限不足**:当前运行的程序可能没有足够的权限去访问指定的文件夹或文件。
2. **文件不存在**:文件的实际路径可能存在拼写错误,或者文件已经从该位置删除,尚未更新路径。
3. **磁盘满或者网络问题**:如果 D 盘空间已满或者网络连接不稳定也可能导致无法访问。
4. **安全策略限制**:某些操作系统可能会阻止对某些文件的访问,如临时文件、系统文件等。
处理这种错误,你需要检查文件路径是否正确,确保有足够的权限,并确认文件是否存在。在代码中捕获并处理这样的异常,可以使用 try-catch-finally 语句,比如:
```java
try {
File file = new File("D:\\workspace\\images\\contract");
if (!file.exists()) {
throw new FileNotFoundException("File not found at the specified path.");
}
// 加载文件操作...
} catch (FileNotFoundException e) {
e.printStackTrace();
// 处理异常...
}
```
阅读全文