第一个是众所周知的public,对于大部分人来说,第一个接触到的应该都是public这个,所以我们首先讲一讲。
public在本类,同一个包类,继承类,其他类中都可以访问
例如:
public class hh
{
public static void main(String[] args){
A per = new A();
int age=per.age;
String name=per.name;
System.out.println(age+","+name);
}
}
class A
{
public int age=18;
public String name="张三";
}
输出结果:
使用这个修饰的只能够在本类中访问,其他类无法调用,而且此方法无法被重写和覆盖
例如:
public class hh
{
public static void main(String[] args){
A per = new A();
int age=per.age;
String name=per.name;
System.out.println(age+","+name);
}
}
class A
{
private int age=18;
private String name="张三";
}
这样会有:
应该这样写:
public class hh
{
public static void main(String[] args){
A per = new A();
int age=per.getage();
String name=per.getname();
System.out.println(age+","+name);
}
}
class A
{
private int age=18;
private String name="张三";
public void setage(int age){
this.age=this.age;
}
public void setname(String name){
this.age=this.age;
}
public int getage(){
return age;
}
public String getname(){
return name;
}
}
则有:
可以在同一个类,同一个包,不同的包类内访问,但不能在非同一个包中非子类中访问
例如:
public class hh
{
public static void main(String[] args){
A per = new A();
int age=per.age;
String name=per.name;
System.out.println(age+","+name);
}
}
class A
{
protected int age=18;
protected String name="张三";
}
则有:
可以在同一个类中,同一个包中访问,不能在不同包内访问
例如:
public class hh
{
public static void main(String[] args){
A per = new A();
int age=per.age;
String name=per.name;
System.out.println(age+","+name);
}
}
class A
{
default int age=18;
default String name="张三";
}
则有:
通过这次学习我了解了一下在四个修饰次的访问权限,收获颇多。



