public private protected和默认的区别

 我来答
黑马程序员
2017-03-13 · 改变中国IT教育,我们正在行动
黑马程序员
黑马程序员为大学毕业后,有理想、有梦想,想从事IT行业的年轻人改变自己的命运。黑马程序员成就IT黑马
向TA提问
展开全部

public private protected和默认的区别?如下:

第一, 类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。

总结如下表

第二,在说明这四个关键字之前,我想就class之间的关系做一个简单的定义:对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友。

1、 public :对 所有用户 开放,所有用户都可直接调用
2、 private :私有。 除了class自己之外,任何人都不可直接使用 ,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可使用。
3、 protected :对于子女、朋友来说,就是public的,可自由使用,无任何限制;而对于其他的外部class,protected就变成private。( 同一个包中的类,若不在同一个包中,必须为其子孙类才可使用)

4、默认: 默认可以称为friendly,但是java语言中是没有friendly这个修饰符的 ,这样称呼应该是来源于c++。默认的访问权限是 包级访问权限 。

第三,另外补充说明:
1.每个编译单元(类文件)都仅能有一个public class
2.public class的名称(包含大小写)必须和其类文件同名。
3.一个类文件(*.java)中可以不存在public class。
如果我们在某个包内撰写一个class,仅仅是为了配合同一包内的其他类工作,并且我们不想再为了撰写说明文档给客户(不一定是现实意义的客户,可能是调 用这个类的类)看而伤脑筋;或者有可能过一段时间之后会彻底改变原有的做法,并以全新的版本代替旧版本,这种情况下一般会默认。
4、 class不可以是private和protected 。

磕悄柯B0
2016-06-29 · TA获得超过330个赞
知道小有建树答主
回答量:152
采纳率:64%
帮助的人:27.9万
展开全部

public private protected和默认的区别我们可以分为以下几个点:

1、我们知道private修饰词,表示成员是私有的,只有自身可以访问;  

2、而protected,表示是受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。 

3、但无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访问,访问权限是包级访问权限;

 4、然而public修饰词和其他不一样的是,表示成员是公开的,所有其他类都可以访问;


补充一点知识:

Public,protected,private解析

Public成员可以被同一个类或同一个包或不同包下的类都可以访问。

Protected成员可以被同一个类或同一个包下的类可以访问,不能被不同包下的类访问。

Private成员可以被于同一个类访问,不能被同一个包或不同包下的类访问。

 


特别说明一点protected在不同包子类下为yes的情况:

包外子类有权访问父类成员是什么意思?它指子类继承该成员。 然而,这不意味着包外子类能够使用父类实例的引用访问该成员。换句话说,保护=继承。保护不是指子类能够处理受保护的父类成员,就好像它是公有的那样。因此,如果包外子类获得父类引用,该子类不能在父类引用上使用点运算符来.访问受保护的成员。子类只能通过继承看到受保护的成员。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式