写一个类,里面四个不同修饰符的属性或方法,在同一个类,一个包,不同包的类中访问
时间: 2024-10-12 12:13:10 浏览: 39
sql2005试题要想定义一个不能被实例化的抽象类,在类定义中必须加上修饰符
在Java中,我们可以创建一个类,其中包含四种不同访问修饰符的属性和方法:public、private、protected和默认(即无修饰符)。它们的作用范围如下:
1. `public`: 公有属性和方法可以在任何地方(包括同一包内和不同包的类)直接访问。
2. `private`: 私有的属性和方法只能在当前类内部访问,外部类无法直接访问。
3. `protected`: 受保护的属性和方法可以在当前类、其子类以及同包内的类中访问。
4. 默认(无修饰符): 如果一个成员变量在类声明时不指定任何访问修饰符,默认就是默认(package-private),这意味着它在同一包下的类可以访问,但在不同包的类则不能。
下面是这样一个类的例子:
```java
// 定义在一个名为com.example.util包中的MyClass.java
package com.example.util;
public class MyClass {
// public 属性和方法
public String publicAttribute;
public void publicMethod() {
System.out.println("Public method");
}
// private 属性和方法
private int privateAttribute;
private void privateMethod() {
System.out.println("Private method");
}
// protected 属性和方法
protected double protectedAttribute;
protected void protectedMethod() {
System.out.println("Protected method");
}
// default package-private属性和方法(只在同一包内有效)
double packagePrivateAttribute;
void packagePrivateMethod() {
System.out.println("Package-private method");
}
}
```
在其他包中的类想要访问上述类中的部分属性或方法,需要考虑访问修饰符的限制:
- 对于`public`属性和方法,可以直接访问。
- 对于`protected`属性和方法,如果在同一个包或子类中,也可以访问。
- 对于`private`属性和方法,由于权限限制,外部类一般不会直接访问,除非该类提供公共方法去获取或设置这些私有值(例如getters和setters)。
- `package-private`属性和方法仅限于同一包内访问。
阅读全文