java中public、private、protected的区别

java中public、、protected的区别

在java中通过三个关键字public、private、在类的内部来进行边界的设定,这些访问指定词(access specifier)决定了紧跟其后被定义的东西可以被谁访问。

  1. public:表示紧跟其后的成员可以被任何人引用
  2. private:表示紧跟其后的成员除了类型创建者和类型内部的方法,任何人都不可引用,否者程序编译报错
  3. protected:protected关键字与private效果相当,差别仅在于继承的类可以访问protected成员
  4. 默认访问权限(即定义属性时不加任何关键字修饰):默认访问权限通常被称为“包访问权限”,在这种权限下的成员变量可被同一个包中的其他类访问

具体如下: 我们首先按照如下方式创建三个类:Person、Teacher、Animal,其中Person与Teacher类在同一个包person中,Animal类在另一个包animal中

package person;


public class Person {
          
   
	public int age;
	String name;
	protected String address;
	private String gender;
}
package person;

public class Teacher extends Person {
          
   
	
	public void setInfo() {
          
   
		Person per = new Person();
		per.age = 12;//public修饰成员可被任何人访问
		per.name = "Bob";//同一个包中的类可访问默认权限成员
		per.address = "UK";//继承的类可访问protected成员
		per.gender = "man";//ERROR 继承的类无法访问private成员
	}
}
package animal;

import person.Person;

public class Animal {
          
   
	public void setInfo() {
          
   
		Person per = new Person();
		per.age = 12;//public修饰成员可被任何人访问
		per.name = "Bob";//ERROR 包访问权限成员无法被其他包中的类访问
		per.address = "UK";//ERROR protected成员无法被其他包中的类访问
		per.gender = "man";//ERROR private成员只能被类型创建者及类型内部方法访问
	}
经验分享 程序员 微信小程序 职场和发展