public:公开的,任何地方都可以访问。
protected:受保护的,同一个包中的类和所有子类(可跨包)可以访问。
private:私有的,只有在同一个类中可以访问。
默认(无修饰符):包级私有(package-private),只有在同一个包中可以访问。
文件名和 public 类名必须匹配:一个 .java 文件中可以有多个类,但最多只能有一个 public 类。如果某个类被声明为 public,那么文件名必须与这个类的名字完全一致(区分大小写),并且文件扩展名是 .java。包声明:通常,Java 类会被放置在包(package)中。包声明应该在文件的第一行(在任何导入语句之前)。类的可见性:如果一个类没有被声明为 public,那么它的可见性是包级私有的(package-private),这意味着它只能在同一个包中访问。
光看文字我感觉啥用没有,下面给出实例代码来说明。
目录结构:
day00_访问修饰符.java
给出四中访问修饰符类型的方法
package study;public class day00_访问修饰符 {public void publicMethod() {System.out.println("Public method in PublicClass");}protected void protectedMethod() {System.out.println("Protected method in PublicClass");}void packagePrivateMethod() {System.out.println("Package-private method in PublicClass");}private void privateMethod() {System.out.println("Private method in PublicClass");}
}
day00_访问修饰符_同一个包内.java
很明显,私有方法无法在不同类被访问。
package study;public class day00_访问修饰符_同一个包内 {public void accessMethods() {day00_访问修饰符 publicClass = new day00_访问修饰符();publicClass.publicMethod(); // 可以访问publicClass.protectedMethod(); // 可以访问publicClass.packagePrivateMethod(); // 可以访问
// publicClass.privateMethod(); // 不能访问}
}
day00_访问修饰符_不同包内.java
我感觉这里就是核心了,可以发现在不同包下,只要继承了不同包下的类,就可以访问它的protected类型方法,即使不在同一个包下。
但是默认的不加显示修饰符的包级私有(package-private)方法,就算你继承了,是它的子类,但是父类和子类不同同一个包下,那就是无法访问包级私有(package-private)方法。
package study_实验访问修饰符;import study.day00_访问修饰符;public class day00_访问修饰符_不同包内 extends day00_访问修饰符
{public void accessProtectedMethod() {publicMethod(); // 可以访问,因为是 publicprotectedMethod(); // 可以访问,因为是子类// packagePrivateMethod(); // 不能访问,因为不同包// privateMethod(); // 不能访问,私有方法}
}