黑马程序员技术交流社区

标题: protected 以及private作用范围? [打印本页]

作者: 759345779    时间: 2014-4-2 10:29
标题: protected 以及private作用范围?
protected 以及private作用范围有多大?其它什么范围内的方法才能有权限操作这两个关键字修饰的修饰的变量呢?
作者: Up↑Lee↗    时间: 2014-4-2 10:40
标题: RE: protected 以及private作用范围?


private                私有访问。只限于本类成员访问,子类,实例都不能访问。
protected              保护访问。只限于本类和子类访问,实例不能访问。

public的变量和函数在类的内部外部都可以访问,而private只有在类的内部可以访问;
       如果一个类没有派生出其他类,那么protectedprivate是完全相同的,也就是说protectedprivate一样只能在类的内部访问,
不能在类的外部访问。但是在派生其他类的情况下,protectedprivate的区别就体现出来了。private型变量只能在类本身中访问,
在其派生类中也不能访问;而protected型的变量可以在派生类中访问。

作者: anqi    时间: 2014-4-2 10:44
本帖最后由 anqi 于 2014-4-2 10:47 编辑

老师的视频中有详细的讲解我在给你画个图吧
下面图中的黑圆圈是可以访问,x是不可以访问。

简单来说protected是保护权限,意思是不同包之间只有子类才能使用,同一包中随便访问。
private是私有权限 ,外部完全无法访问。连子类都不行。

作者: 闲人    时间: 2014-4-2 10:49
权限范围包含是:
      public>protected>默认修饰符>private
意思是,后面的可以调用前面修饰的,前面的不能调用后面修饰的
作者: 董振冬    时间: 2014-4-2 10:52
protected和private都是不能访问的,对于类外使用而言,这两个是完全相同的.protected 在本包中可以调用该方法其实都是在写框架的时候用得到。为了只暴露给调用者部分接口用的。;
作者: xuehuayous    时间: 2014-4-2 12:21
1.private:私有权限可以修饰成员变量和成员函数
只能在本类当中使用
2.protected:受保护权限,首先拥有和default权限一样的功能,但是该权限只能修饰成员变量和成员函数;
其次还允许跨包的继承

作者: Engle    时间: 2014-4-2 15:42
Java语言中的访问权限修饰符有4种,但是仅有3个关键字,因为不写访问权限,在Java中被称为默认权限,或同包权限,我以(default)代替。下面按照权限从小到大的顺序对4中访问权限分别介绍。

1.私有权限(private)

private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。

2.默认权限(default)

类,数据成员,构造方法,方法成员,都能够使用默认权限,即不写任何关键字。默认权限即同包权限,同包权限的元素只能在定义它们的类中,以及同包的类中被调用。

3.受保护权限(protected)

protected可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被protected修饰的成员,能在定义它们的类中,同包的类中被调用。如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类。

4.公共权限(public)

public可以修饰类,数据成员,构造方法,方法成员。被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。



有关Java语言的修饰符,需要注意的问题有如下几个:

1.并不是每个修饰符都可以修饰类(指外部类),只有public和default可以。

2.所有修饰符都可以修饰数据成员,方法成员,构造方法。

3.为了代码安全起见,修饰符不要尽量使用权限大的,而是适用即可。比如,数据成员,如果没有特殊需要,尽可能用private。

4.修饰符修饰的是“被访问”的权限。
作者: 杨殿生    时间: 2014-4-2 15:45
                           public                 protectet          defaul          private
同一个类中             ok                        ok                  ok                  ok
同一个包中             ok                        ok                  ok                        
子类                       ok                        ok
不同包中                ok
作者: 759345779    时间: 2014-4-2 15:54
感谢各位




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2