java类和对象——访问权限

目录

  • 定义
  • 1.私有变量和私有方法(privated)
  • 2.共有变量和共有方法(public)
  • 3.友好变量和友好方法(default)
  • 4.受保护的成员变量和方法(protected)
  • 5.public类和友好类
  • 访问权限表

定义

类在定义声明成员变量和方法时,可以用关键字private、protected和public来说明成员变量和方法的访问权限,使得对象访问自己的的变量和使用方法受到一定的限制。
访问权限是指类创建的对象是否可以通过 “ . ” 运算符访问分配给自己的变量、是否可以通过 “ . ” 运算符调用类中的是实例方法和类方法。

1.私有变量和私有方法(privated)

用关键字private修饰的成员变量和方法被称为私有变量和私有方法。如:

 public class Animal {
 //name被修饰为私有的String类型的变量
    private String name ;

//方法eat是私有方法
    private void eat (String food){
        System.out.println(name + "正在吃" + food);
    }
}

java类和对象——访问权限_第1张图片

java类和对象——访问权限_第2张图片
由上面两图可以看到:在另一个类main中用类Animal创建一个对象后,该对象不能访问自己的私有变量和私有方法,会报错。idea也提示方法eat在类Animal中被private修饰。则:
对于私有成员变量或方法,只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法。

2.共有变量和共有方法(public)

用public修饰的成员变量和方法被称为共有变量和共有方法。如:

public class Animal {
        //name被修饰为public的String类型的变量
        public String name ;

        //方法eat是public方法
        public void eat (String food){
            System.out.println(name + "正在吃" + food);
        }
}

当类Animal中的变量和方法被public修饰后,在另一个类main中如下图:
java类和对象——访问权限_第3张图片
可以看到,此时可以正常运行。表明:在同一个包中,一个类中被public修饰的变量和方法,在另一个类中可以通过类名来操作这个成员变量和调用这个方法。

那不同包呢?如下图:
java类和对象——访问权限_第4张图片
此时,可以正确输出。则可以看出,在不同包中,也可以通过类名来操作被public修饰的成员变量和调用这个方法。

3.友好变量和友好方法(default)

不用private、public、protected修饰符的成员变量和方法被称为友好变量和友好方法。如:

public class Animal {
        //name是友好的String变量
         String name ;

        //方法eat是友好方法
         void eat (String food){
            System.out.println(name + "正在吃" + food);
        }
}

java类和对象——访问权限_第5张图片
java类和对象——访问权限_第6张图片
由上面两图可以看出:在同一个包中,一个类中的友好变量和友好方法,在另一个类中可以通过类名来操作这个成员变量和调用这个方法。而在不同的包中,如果源文件使用import语句引入了另一个包中的类,并用该类创建了一个对象,那么该类的对象将不能访问自己的友好变量和友好方法

4.受保护的成员变量和方法(protected)

用protected修饰的成员变量和方法被称为受保护的成员变量和受保护的方法,如:

public class Animal {
        //name被修饰为protected的String类型的变量
         protected String name ;

        //方法eat是protected方法
        protected void eat (String food){
            System.out.println(name + "正在吃" + food);
        }
}

java类和对象——访问权限_第7张图片
java类和对象——访问权限_第8张图片
由上两图可以看出,在同一个包中,一个类中的友好变量和友好方法,在另一个类中可以通过类名来操作这个成员变量和调用这个方法。而在不同的包中则不行。

5.public类和友好类

类声明时,如果关键字class前面加上关键字public,就称这样的类是一个public类,不能用protected和private修饰类。如:

public class A{
......

}

可以在任何另一个类中使用public类创建对象。

而一个类如果不加public修饰,如:

class A{
......
}

这样的类被称为友好类。另一个类使用友好类创建对象时,必须保证他们在同一个包中

访问权限表

假设对象a是类A创建的,则对象对成员的访问权限表如下:
(访问权限由左至右增大)
在这里插入图片描述

你可能感兴趣的:(Java,java)