A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余威宏 中级黑马   /  2012-11-6 09:55  /  2447 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java中,public, private , protected,好像还有个默认的权限 ,它们的区别都是什么呢,概念有点小模糊,往各位大虾多指教一下!

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

8 个回复

倒序浏览
                 java提供的四种访问控制修饰符控制的方法和变量的访问权限:
                1、公开级别:  用public修饰,对外公开
                2、受保护级别:用protected修饰,对于子类和同一个包中的类公开
                3、默认级别:  没有修饰符,向同一个包的类公开
                4、私有级别:  用private修饰,只有类本身可以访问,不对外公开

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
主要是控制访问权限
private 同一个类中
default 同一个类中、同一个包中
protected 同一个类中、同一个包中、子类中
public 同一个类中、同一个包中、子类中、全局范围内

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
private                私有的                  只有自己可以使用的 只有本类类体当中能使用的
protected            本包内可以使用       包外有继承关系的子类中也可用
public                公共的                  谁都可以使用的
default                         它是默认的           只能在同一包中使用的

希望能帮到你了、、、

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
1)      public(公共的):被public所修饰的属性和方法可以被所有类访问



2)      protect(受保护的):被protect所修饰的属性和方法可以在类内部,相同包以及该类的子类所访问。



3)      private(私有的):被private所修饰的属性和方法只能在该类内部使用



4)      默认的(不加任何访问修饰符):在类内部以及相同包下面的类所使用。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
上面都说的差不多一样.

那我再来补充一下:

public 这个没有争议,公开的属性或者方法,可以被所有可以调用的行为所调用!

protect 受保护的,可以说是小范围的public(同一个包内,),也可以被继承的类所访问(父子关系).(所谓包就是 package java.bao;)

然后再说default,这个跟protect就差在不能被继承的类所访问,其他都一样.

这里要重点说下private:

私有的,顾名思义只能在本类内部所使用,其他所有的调用方法都不能直接调用到被private所修饰的属性或者方法.

这里重点说的是关于private继承的关系:当有子类继承的父类里有private,父类的private是会被子类继承的!但是在子类里是没有办法访问到这个private,如果用super也只是去访问父类里的private,而不是子类的.这也就是为什么说不推荐定义太多的private,因为被继承以后,这些private其实完全用不了,只会浪费内存.

这就相当你父亲有栋房子(private),他有钥匙(调用private),而作为继承的你只有房子(private),却没有钥匙(钥匙在父亲手里).差不多就这个意思 千万注意!

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
  公有成员public   member   
  在程序的任何地方都可以被访问实行信息隐藏的类将   
  其public   成员限制在成员函数上这种函数定义了可以被一般程序用来操纵该类类   
  型对象的操作   
   
  私有成员private   member     
  只能被成员函数和类的友元访问实行信息隐藏的类把   
  其数据成员声明为private   
   
  被保护成员protected   member     
  对派生类derived   class   就像public   成员一样   
  对其他程序则表现得像private
回复 使用道具 举报
徐丹 中级黑马 2012-11-6 22:01:58
8#
public是公用的,其他类都可调用.
private是私有的,是最严格的,只有当前类(当前JAVA文件)可以调用,甚至继承当前类的子类都不能调用.
protected解决了private的子类不能调用的缺陷,可以理解为一个继承系下的可以调用

打个比方: PUBLIC相当于外人可以调用.private相当于只家庭内可以调用,protected相当于亲戚可以调用.

默认/缺省,个人认为是JAVA比较失败的设计.很多开发组都明确禁止缺省修饰符.
缺省的含义: 包内可以调用,即只要是同一个包内,都可以调用. 局限性比protected 大,比public 小. 从'外人'的角度看,类似于public,但又比public  多了个不伦不类的包限定.

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
Crondy 初级黑马 2012-11-6 22:16:47
9#
都回答的好详细,这就是java面向对象的 3个修饰关键词,都很有经验……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马