黑马程序员技术交流社区
标题:
java基础
[打印本页]
作者:
vipzh
时间:
2012-12-1 22:47
标题:
java基础
private ,public,protected的作用域怎么区分?总是搞混
作者:
邢晏玮
时间:
2012-12-1 23:02
public,protected,friendly,private的访问权限如下:
关键字 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly
public声明的变量及方法,表明在整个包内包外都可使用。
private 声明的变量及方法,只在声明的类内可以使用。
protected包外不可使用。包内可以使用。
不使用关键字默认为包内使用。
作者:
聽聽我dē❤
时间:
2012-12-2 12:24
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly
Java中所谓的“friendly”和“default”都只是一种说法,并不是说真有那么一个指定默认访问权限的关键字,Java中类的成员权限修饰符只有三个:public/private/protected
public :也叫是公有的 大家都可以用没有任何限制,只要你知道具体位置就可以直接那来用,想调用另外一个类的public的方法只需要创建这个类的一个对象 然后直接是用就行
protected :具有protected访问控制级别的成员是半公开的,外界无法直接访问这个控制级别的成员,但是派生类的base指针可以获得访问能力。protected与private基本相似,只有在继承时有较大的区别。继承的类可以访问protected成员,但是不能访问private成员。protected 关键字是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问
private:private关键字意味着除非那个特定的类,而且从那个类的方法里,否则没有人能访问那个成员。同一个包内的其他成员不能访问private成员,这使其显得似乎将类与我们自己都隔离起来。另一方面,也不能由几个合作的人创建一个包。所以private允许我们自由地改变那个成员,同时毋需关心它是否会影响同一个包内的另一个类。默认的“友好”包访问通常已经是一种适当的隐藏方法;请记住,对于包的用户来说,是不能访问一个“友好”成员的。这种效果往往能令人满意,因为默认访问是我们通常采用的方法。
总之:使用private修饰符可以完全隐藏类的成员,使得不能从类外直接访问它们。
不使用修饰符允许同一个包里的任何类直接访问类的成员,但是其他包中的类不可以。
使用protected修饰符允许任何包中的子类或同一包的类的成员。
使用public修饰符允许任何类访问类的成员。
作者:
马海保
时间:
2012-12-2 12:49
类 包 子类 其他
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
默认为friendly
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2