成员变量的访问权限
访问权限修饰符声明了成员变量的访问权限。
面向对象程序设计语言Java/C++提供的显示的访问权限修饰符有3种,分别是:私有(private)、保护(protected)和公共(public)。
将被这些修饰符所修饰的变量分别称为私有成员变量、被保护的成员变量和公共成员变量。
下面分别讨论各个修饰符的用法。
1.公共变量
凡是被public修饰的成员变量,都称为公共变量,它可以被任何类所访问。
即允许该变量所属的类中所有方法访问,也允许其他类在外部访问。
注:用public修饰的变量,允许任何类在外部直接访问,这破坏了封装的原则,造成数据安全性能下降,所以除非有特别的需要,否则不要使用这种方案。
2.私有变量
凡是被private修饰的成员变量,都称为私有变量。
它只允许在本类的内部访问,任何外部类都不能访问它。
- 在C++中提供了友元类、友元函数,如果将某一个类声明为私有成员变量所在类的友元类,那么该友元类可以访问该类的私有成员变量
- 在Java中为了让外部用户能够访问某些私有变量,通常类的设计者会提供一些方法给外部调用,这些方法被称为访问接口。
下面是一个改写过的declarePrivate类。
public class declarePrivate{
private int privateVar=10; //定义一个私有变量
void change(){
privateVar=20;
}
public int getPrivateVar(){ //定义一个接口,返回私有变量 privateVar的值
return privateVar;
}
public boolean setPrivateVar(int value){ //定义一个接口,可以设置privateVar
的值
//可以在这里先检测value是否在允许的范围内,然后再执行下面的语句。
privateVar = value;
return true;
}
}
私有变量很好地贯彻了封装原则,所有的私有变量都只能通过程序员设计的接口来访问,任何外部使用者都无法直接访问它,所以具有很高的安全性。
但是,在下面这两种情况下,需要使用Java另外提供的两种访问类型:
通过接口访问私有变量,将降低程序的性能,在程序性能比较重要的情况下,需要在安全性和效率间取得一个平衡。
私有变量无法被子类继承,当子类必须继承成员变量时,需要使用其他的访问类型。
3.保护变量
凡是被protected修饰的变量,都被称为保护变量。
除了允许在本类的内部访问之外,还允许它的子类以及同一个包中的其他类访问。
子类是指从该类派生出来的类。
————————————————
参考原文链接:https://blog.csdn.net/athenamax/article/details/7627144
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)