1:private修饰符
//类Person
class Person {
private int age; //private修饰的成员属性,不能给其他类直接访问,只能在类内部成员访问
public int getAge() { //public修饰的访问,提供给外部类一个获取内部私有数据的途径
return age;
}
public void setAge(int age) { //public修饰的访问,提供给外部类一个改写内部私有数据的途径
this.age = age;
}
}
//类PriavteTest
public class PrivateTest {
public static void main(String[] args) {
Person person = new Person();
// person.age=90; 直接访问是不行的
// 通过公开的方法setAge() 和 getAge ()访问
person.setAge(20);
System.out.println(person.getAge());
}
}
说明:
如果类的成员被private访问控制符修饰,则这个成员只能被该类的其他成员访问,其他类无法直接访问。
类的良好封装就是通过private关键字实现的。
public可以被其他类访问
2:protected修饰符
不同包内的类中,被修饰为protected的成员(方法和属性)可以被继承子类访问。
在 com.hnevc.accesscontrol.another 包创建一个Parent类
然后在 com.hnevc.accesscontrol包中创建一个Child类和Child2类,其中Child类继承至Parent。
package com.hnevc.accesscontrol.another;
public class Parent {
//private 修饰的属性
private String name="TOM";
private int age=10;
// proteected修饰的方法
protected int getAge(){
return age;
}
// proteected修饰的方法
protected String getName(){
return name;
}
// default修饰的方法
void setName(String name){
this.name = name;
}
}
package com.hnevc.accesscontrol;
import com.hnevc.accesscontrol.another.Parent;
//Child类继承至Parent类
class Child extends Parent {
void accessParent() {
String name = getName(); // getName 在Parent中是protected修饰,可以在子类中访问
// setName("JIM"); //setName方法在Parant中是default修饰,不能再不同的包中访问
}
}
//独立类
class Child2 {
void accessParent() {
//String name = getName(); //无法访问,Child不是Parent的子类,无法继承getName()方法
}
}
第9行代码,试图访问不同包中的父类中修饰为default的方法,无法访问