赞
踩
类在定义声明成员变量和方法时,可以用关键字private、protected和public来说明成员变量和方法的访问权限,使得对象访问自己的的变量和使用方法受到一定的限制。
访问权限是指类创建的对象是否可以通过 “ . ” 运算符访问分配给自己的变量、是否可以通过 “ . ” 运算符调用类中的是实例方法和类方法。
用关键字private修饰的成员变量和方法被称为私有变量和私有方法。如:
public class Animal {
//name被修饰为私有的String类型的变量
private String name ;
//方法eat是私有方法
private void eat (String food){
System.out.println(name + "正在吃" + food);
}
}
由上面两图可以看到:在另一个类main中用类Animal创建一个对象后,该对象不能访问自己的私有变量和私有方法,会报错。idea也提示方法eat在类Animal中被private修饰。则:
对于私有成员变量或方法,只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法。
用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中如下图:
可以看到,此时可以正常运行。表明:在同一个包中,一个类中被public修饰的变量和方法,在另一个类中可以通过类名来操作这个成员变量和调用这个方法。
那不同包呢?如下图:
此时,可以正确输出。则可以看出,在不同包中,也可以通过类名来操作被public修饰的成员变量和调用这个方法。
不用private、public、protected修饰符的成员变量和方法被称为友好变量和友好方法。如:
public class Animal {
//name是友好的String变量
String name ;
//方法eat是友好方法
void eat (String food){
System.out.println(name + "正在吃" + food);
}
}
由上面两图可以看出:在同一个包中,一个类中的友好变量和友好方法,在另一个类中可以通过类名来操作这个成员变量和调用这个方法。而在不同的包中,如果源文件使用import语句引入了另一个包中的类,并用该类创建了一个对象,那么该类的对象将不能访问自己的友好变量和友好方法。
用protected修饰的成员变量和方法被称为受保护的成员变量和受保护的方法,如:
public class Animal {
//name被修饰为protected的String类型的变量
protected String name ;
//方法eat是protected方法
protected void eat (String food){
System.out.println(name + "正在吃" + food);
}
}
由上两图可以看出,在同一个包中,一个类中的友好变量和友好方法,在另一个类中可以通过类名来操作这个成员变量和调用这个方法。而在不同的包中则不行。
类声明时,如果关键字class前面加上关键字public,就称这样的类是一个public类,不能用protected和private修饰类。如:
public class A{
......
}
可以在任何另一个类中使用public类创建对象。
而一个类如果不加public修饰,如:
class A{
......
}
这样的类被称为友好类。另一个类使用友好类创建对象时,必须保证他们在同一个包中。
假设对象a是类A创建的,则对象对成员的访问权限表如下:
(访问权限由左至右增大)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。