private,protected,public和default的区别

除了default以外,其他都是Java语言的关键字。default代表的是对类成员没有进行修饰的情况。它本身也代表了一种访问控制符。对于它们4中访问控制符来说,它们都可以修饰类的成员(包括静态和非静态成员),这些修饰也就控制了成员能被其他地方访问的限制情况。

对于范围概念来说,Java指的范围包括类内部,所在包下,子父类之间和外部包4种情况。如果一个成员需要被外部包所访问,则必须使用public修饰符;如果一个成员需要被定义在不同包下的子类所访问,则可以使用public或protected修饰符;如果一个成员需要被本包下的其他类所访问,则可以不用写任何的修饰符,使用public或者protected也行;若一个成员想使用同类中其他成员,则使用任意一个修饰符即可;若一个成员不想被任何一个外部的类所访问,则使用private关键字比较恰当。

下面对这几中修饰符作详细介绍:

1.对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类,接口,异常等。它往往对于对外的情况,也就是对象或类对外的一种接口的形式。

2.对于protected修饰符,它主要的作用就是用来保护子类的。它的含义在于子类可以使用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。

3.对于default来说,有的时候也称为friendly(友员),它是针对本包访问而设计的,任何处于本包下的类,接口,异常等,都可以互相访问,即使是父类没有用protected修饰的成员也可以。

4.对于private来说,它的访问权限仅限于类的内部,是一种封装的体现,例如,大多数的成员变量都是修饰为private的,它们不希望被其他任何外部的类访问。

区别:

public:可以被所有其他类所访问

private:只能被自己访问和修改

protected:自身、子类及同一个包中类可以访问

default:同一包中的类可以访问,声明时没有加修饰符,认为是friendly。

注意:java的访问控制是停留在编译层的,也就是它不会在.class文件中留下任何的痕迹,只在编译的时候进行访问控制的检查。其实,通过反射的手段,是可以访问任何包下任何类中的成员,例如,访问类的私有成员也是可能的。

private,protected,public和default的区别的更多相关文章

  1. Java中的private protected public和default的区别

    转至:http://blog.sina.com.cn/s/blog_74c571240101jaf5.html    类内部  本包  子类 外部包  public    √  √  √  √ pro ...

  2. private,protected,public和default的区别

    private,protected,public和default的区别 private,protected,public和default作为Java中的访问修饰符,他们的最大区别就在于访问权限不同: ...

  3. @private@protected@public@package

    @private@protected@public@package 为了强制一个对象隐藏其数据,编译器限制实例变量范围以限制其在程序中的可见性 但是为了提供灵活性,苹果也让开发者显式设置范围(四选一) ...

  4. oc 中四种实例变量的范围类型@private@protected@public@package

    To enforce the ability of an object to hide its data, the compiler limits the scope of instance vari ...

  5. iOS中四种实例变量的范围类型@private@protected@public@package

    文档上记录是这样的 The Scope of Instance Variables Toenforce the ability of an object to hide its data, the c ...

  6. 对private protected public的详解:

    #include <iostream> #include <stack> #include <queue> #include <exception> # ...

  7. Java中private、protected、public和default的区别

    public: 具有最大的访问权限,可以访问任何一个在classpath下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. protected: 主要的作用就是用来保护子 ...

  8. [转]Java中的private、protected、public和default的区别

    原文地址:http://my.oschina.net/u/1169535/blog/403589 (1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类.接口. ...

  9. Java中的private、protected、public和default的区别

        (1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. (2)对于protec ...

随机推荐

  1. Config Server高可用

    一 简介构建高可用的Config Server集群,包括Config Server的高可用,以及依赖Git仓库的高可用. 二 Git仓库的高可用由于配置的内容都存储在Git仓库中,所以要想实现Conf ...

  2. XML就是这么简单

    什么是XML? XML:extensiable markup language 被称作可扩展标记语言 XML简单的历史介绍: gml->sgml->html->xml gml(通用标 ...

  3. SmartSql 类型处理器

    Nuget 安装 Install-Package SmartSql.TypeHandler -Version 3.0.1 SmartSql.TypeHandler 包括了俩种类型的类型处理程序: Js ...

  4. NFS的安装

    NFS的安装鸟哥地址:http://vbird.dic.ksu.edu.tw/linux_server/0330nfs_2.php 13.2 NFS Server 端的设定 既然要使用 NFS 的话, ...

  5. vm12 安装ubuntu15.10详细图文教程 虚拟机安装ubuntu安装 ubuntu更新软件 ubuntu一直卡在下载语言怎么办?

    1,准备工作-ubuntu下载 ubuntu官网下载 如何官网下载ubuntu http://www.ubuntu.com/download/ 2,打开虚拟机 虚拟机安装ubuntu15.10 虚拟机 ...

  6. 痞子衡嵌入式:语音处理工具Jays-PySPEECH诞生记(6)- 文语合成实现(pyttsx3, eSpeak1.48.04)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是语音处理工具Jays-PySPEECH诞生之文语合成实现. 文语合成是Jays-PySPEECH的核心功能,Jays-PySPEECH借 ...

  7. 一统江湖的大前端(1)——PPT制作库impress.js

    <一统江湖的大前端>系列是自己的学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有点O ...

  8. Python全栈开发之---mysql数据库

    1.数据库的安装和连接 #数据库安装 pip install PyMySQL #数据库操作 import pymysql db = pymysql.connect("数据库ip", ...

  9. HTML的概念和三大基石以及标准文档结构

    HTML的概念: 概念:  HTML:超文本标记语言 作用:  需要将java在后台根据用户请求处理的请求结果在浏览器中显示给用户.  在浏览器中数据需要使用友好的格式展示给用户.  HTML是告诉浏 ...

  10. echarts图表

    <div id="main" style="width: 37.5rem;height: 25rem;"></div> <scri ...