访问修饰符的介绍与使用
重要知识点
类的定义与属性定义是都出现了public(公共的)单词,这个出现在第一位的单词被称为"访问修饰符",访问修饰符用于限定类与类的元素的访问范围。
访问修饰符的四种类型
访问修饰符中具有四种不同的类型:
public(公共的):在任何地方都能访问public修饰的元素。
private (私有的)︰只能在当前类访问private修饰的元素。
protected(保护的)∶只能在子类中访问父类protected修饰的元素,或者这两个类在同一个包下。
default(默认) : default比较特殊,在代码中体现为什么都不写,被default修饰的元素只能在当前包(package)中被访问。
代码示例
Pet宠物类,放在com.imooc包下,只是更换每个属性的修饰符
package com.imooc;
public class Pet {
public String type; //公共的
private String name; //私有的
int age; //默认的
protected float weight; //保护的
}
小实验:创建Caller类,包名为com.alibaba,代码如下:
package com.alibaba;
public class Caller{
public static void main(String[] args){
Pet pet = new Pet();
pet.type = "猫"; //1
pet.name = "多多"; //2
pet.age = 1; //3
pet.weight = 2.1f;//4
}
}
程序运行后,第2/3/4句报错。
第1句是正确的,因为public修饰的type变量在随时随地都可以被Caller访问到
第2句报错,原因是name属性是private私有的,只能在Pet类中被访问,显然Caller类main中的代码并不在Pet类中。第3句报错,因为com.imooc与com.alibaba并不是一个包,所以被default默认修饰的age属性便无法被访问。
第4句报错与第3句含义相同,因为weight被protected修饰,但Caller既不是Pet的子类,又没和Pet在同一个包下,因此报错。
通过上面的实验,你应领会访问修饰符的作用,通过设置不同的访问修饰符可以有效控制对象属性的访问范围,从语言的运行机制层面控制程序的访问权限,从而提高秏序的安全性。