java访问修饰符的访问范围(对Java中四种访问修饰符的理解)

边肖今天为你编译:理解Java中的四个访问修饰符。让我们看一下四个访问修饰符的介绍。public public修饰符,public修改的类,变量,方法都在同一个类,同一个包里。 ......

  今天小编为大家整理了:关于Java中四种访问修饰符的理解

  大家一起来看一下吧

  四种访问修饰符的介绍

  public

  public公共的修饰符,被public修饰的类、变量和方法在所在类,相同的包下,其他的包中都可以访问。

  protected

  protected被保护的修饰符,被protected修饰的类、变量和方法在所在类,相同的包下,和子类中都可以被访问。

  default

  default默认的修饰符,被default修饰的类、变量和方法在所在类,相同的包下可以访问。

  private

  private私有的修饰符,被private修饰的类、变量方法只能在所在类中访问。

  四种访问修饰符的访问权限表:

  1.同一个类下访问

  public String name = '张三'; //公共修饰符修饰的变量

  protected String sex = '男'; //被保护的修饰符修饰的变量

  String birthday='1999-09-09'; //默认修饰符修饰的变量

  private int age = 18; //私有修饰符修饰的变量

  //判断被任何修饰符修饰的变量在同一个类中是否可以访问,在别的类下调用show方法查看是否可以正常调用产生结果即可

  public void show() {

  System.out.print(name+' ');

  System.out.print(sex+' ');

  System.out.print(birthday+' ');

  System.out.print(age+' ');

  }

  2.同一个包下访问

  public class Two {

  public static void main(String[] args) {

  One o = new One();

  //---------------------------------在同一个包下访问--------------------------

  System.out.println('----------在同一个包下访问-------------------------');

  System.out.print(o.name+' '); //public修饰的变量可以访问

  System.out.print(o.sex+' '); //protected修饰的变量可以访问

  System.out.println(o.birthday+' '); //default修饰的变量可以访问

  // System.out.println(o.age); private修饰的变量不能访问

  //------------------------调用show()方法查看在本类下所有被不同修饰符修饰的变量是否可以正常访问

  System.out.println('----------------本类下被修饰的变量是否可以正常访问------------------');

  o.show();

  }

  }

  在同一个包下访问除了被private修饰的age,其他修饰符修饰的变量均可以正常访问,并且在同一个类下所有修饰符修饰的变量都可以正常访问到。

  因此:在同一个包下private修饰的类、变量、方法能在本类中访问,不能在其他类中访问。

  在同一个包下public、protected、default修饰的类、变量、方法能在本类和其他类中访问。

  3.不同的包下的子类访问

  package .miao.test2;

  import .miao.test1.One;

  public class Three extends One{

  public static void main(String[] args) {

  Three three= new Three();

  //---------------------------------在不同的包下的子类访问--------------------------

  System.out.println('----------在不同的包下的子类访问-------------------------');

  System.out.print(three.name+' '); //public修饰的变量可以访问

  System.out.print(three.sex+' '); //protected修饰的变量可以访问

  //System.out.println(three.birthday+' '); 默认修饰符修饰的变量不能访问

  //System.out.println(three.age); private修饰的变量不能访问

  }

  }

  在不同的包下的子类访问只有public和protected修饰的类、变量、方法能够访问。

  因此:在同一个包下private修饰的类、变量、方法只能在本类中访问,不能在同一个包下的其他类中和不同包下的子类中访问。

  default修饰的类、变量、方法能在同一个包下的类中访问,不能不同的包的子类下访问。

  public、protected修饰的类、变量、方法能在同一个包下的类、不同包下的子类中访问。

  4.不同的包下访问

  package .miao.test2;

  import .miao.test1.One;

  public class Four {

  public static void main(String[] args) {

  One o = new One();

  //---------------------------------在不同的包下访问--------------------------

  System.out.println('----------在不同的包下访问-------------------------');

  System.out.print(o.name+' '); //public修饰的变量可以访问

  // System.out.print(o.sex+' '); protected修饰的变量不能访问

  //System.out.println(o.birthday+' '); 默认修饰符修饰的变量不能访问

  //System.out.println(o.age); private修饰的变量不能访问

  }

  }

  最终结论:

  private修饰的类、变量、方法只能在本类中访问。

  default(默认修饰符)修饰的类、变量、方法能在同一个包下的类中访问。

  protected修饰的类、变量、方法能在同一个包下的类和不同的包下的子类中访问,但不能在不同的包下访问。

  public修饰的类、变量、方法能以上的所有情况下访问。