在Java中,一个源文件中只能有一个public类,并且这个类的名称必须与文件名相匹配。其他非public类可以在同一个文件中定义,但是不能使用private、public或protected修饰符。这是因为这些修饰符只能用于类的成员(字段、方法等),而不能用于类本身或整个源文件。
因此,在一个Java源文件中,只能有一个public类,其他类应该使用默认访问修饰符(即不使用任何访问修饰符),以便在同一个包中被访问。如果需要在其他包中使用这些类,应该将它们定义在单独的文件中,并使用public修饰符。
子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
package com.example.animals;
public class Animal {
protected void sleep() {
System.out.println("Animal is sleeping.");
}
}
package com.example.dogs;
import com.example.animals.Animal;
public class Dog extends Animal {
public void doSomething() {
sleep(); // 可以访问从基类继承而来的受保护方法
// Animal animal = new Animal();
// animal.sleep(); // 无法访问基类实例的受保护方法
}
}