修饰符
1.受保护的访问修饰符-protected
子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;
子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
简单来讲,被 protected 修饰的成员对于本包和其子类可见。
举例:
点击查看代码
package com.example.base;
public class BaseClass {
protected void protectedMethod() {
System.out.println("This is a protected method in BaseClass.");
}
}
点击查看代码
package com.example.derived;
import com.example.base.BaseClass;
public class DerivedClass extends BaseClass {
public void testAccessToInheritedMethod() {
// 子类可以直接访问其从基类继承的protected方法
protectedMethod(); // 这是允许的,因为protectedMethod()是从BaseClass继承的
}
public void testAccessToBaseInstanceMethod() {
BaseClass baseInstance = new BaseClass();
// 下面的调用是不允许的,因为protectedMethod()是protected的,且baseInstance不是当前类的实例
// baseInstance.protectedMethod(); // 这会导致编译错误
}
}
点击查看代码
package com.example.derived;
import com.example.base.BaseClass;
public class AnotherClass {
public void testAccess() {
BaseClass baseInstance = new BaseClass();
// 下面的调用是不允许的,因为AnotherClass不是BaseClass的子类,且它们不在同一个包中
// baseInstance.protectedMethod(); // 这会导致编译错误
DerivedClass derivedInstance = new DerivedClass();
// derivedInstance.protectedMethod(); // 这也是不允许的,因为AnotherClass不是DerivedClass的子类
}
}
点击查看代码
public transient int limit = 55; // 不会持久化
public int b; // 持久化
点击查看代码
public class MyRunnable implements Runnable
{
private volatile boolean active;
public void run()
{
active = true;
while (active) // 第一行
{
// 代码
}
}
public void stop()
{
active = false; // 第二行
}
}