黑马程序员技术交流社区
标题: public/private/protected的具体区别 [打印本页]
作者: 余威宏 时间: 2012-11-6 09:55
标题: public/private/protected的具体区别
java中,public, private , protected,好像还有个默认的权限 ,它们的区别都是什么呢,概念有点小模糊,往各位大虾多指教一下!
作者: 罗宝 时间: 2012-11-6 10:10
java提供的四种访问控制修饰符控制的方法和变量的访问权限:
1、公开级别: 用public修饰,对外公开
2、受保护级别:用protected修饰,对于子类和同一个包中的类公开
3、默认级别: 没有修饰符,向同一个包的类公开
4、私有级别: 用private修饰,只有类本身可以访问,不对外公开
作者: 卜永富 时间: 2012-11-6 10:10
主要是控制访问权限
private 同一个类中
default 同一个类中、同一个包中
protected 同一个类中、同一个包中、子类中
public 同一个类中、同一个包中、子类中、全局范围内
作者: 崔利鹏 时间: 2012-11-6 11:40
private 私有的 只有自己可以使用的 只有本类类体当中能使用的
protected 本包内可以使用 包外有继承关系的子类中也可用
public 公共的 谁都可以使用的
default 它是默认的 只能在同一包中使用的
希望能帮到你了、、、
作者: 梁胜海 时间: 2012-11-6 11:57
1) public(公共的):被public所修饰的属性和方法可以被所有类访问
2) protect(受保护的):被protect所修饰的属性和方法可以在类内部,相同包以及该类的子类所访问。
3) private(私有的):被private所修饰的属性和方法只能在该类内部使用
4) 默认的(不加任何访问修饰符):在类内部以及相同包下面的类所使用。
作者: 朱宏青 时间: 2012-11-6 13:26
上面都说的差不多一样.
那我再来补充一下:
public 这个没有争议,公开的属性或者方法,可以被所有可以调用的行为所调用!
protect 受保护的,可以说是小范围的public(同一个包内,),也可以被继承的类所访问(父子关系).(所谓包就是 package java.bao;)
然后再说default,这个跟protect就差在不能被继承的类所访问,其他都一样.
这里要重点说下private:
私有的,顾名思义只能在本类内部所使用,其他所有的调用方法都不能直接调用到被private所修饰的属性或者方法.
这里重点说的是关于private继承的关系:当有子类继承的父类里有private,父类的private是会被子类继承的!但是在子类里是没有办法访问到这个private,如果用super也只是去访问父类里的private,而不是子类的.这也就是为什么说不推荐定义太多的private,因为被继承以后,这些private其实完全用不了,只会浪费内存.
这就相当你父亲有栋房子(private),他有钥匙(调用private),而作为继承的你只有房子(private),却没有钥匙(钥匙在父亲手里).差不多就这个意思 千万注意!
作者: 奋斗的青春 时间: 2012-11-6 13:32
公有成员public member
在程序的任何地方都可以被访问实行信息隐藏的类将
其public 成员限制在成员函数上这种函数定义了可以被一般程序用来操纵该类类
型对象的操作
私有成员private member
只能被成员函数和类的友元访问实行信息隐藏的类把
其数据成员声明为private
被保护成员protected member
对派生类derived class 就像public 成员一样
对其他程序则表现得像private
作者: 徐丹 时间: 2012-11-6 22:01
public是公用的,其他类都可调用.
private是私有的,是最严格的,只有当前类(当前JAVA文件)可以调用,甚至继承当前类的子类都不能调用.
protected解决了private的子类不能调用的缺陷,可以理解为一个继承系下的可以调用
打个比方: PUBLIC相当于外人可以调用.private相当于只家庭内可以调用,protected相当于亲戚可以调用.
默认/缺省,个人认为是JAVA比较失败的设计.很多开发组都明确禁止缺省修饰符.
缺省的含义: 包内可以调用,即只要是同一个包内,都可以调用. 局限性比protected 大,比public 小. 从'外人'的角度看,类似于public,但又比public 多了个不伦不类的包限定.
作者: Crondy 时间: 2012-11-6 22:16
都回答的好详细,这就是java面向对象的 3个修饰关键词,都很有经验……
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |