在Java语法中,对于类与类中的成员变量和成员方法是通过访问控制符来区分控制的。

下面来看看这四种访问控制符的区别:(public、protected、private、default)

1.public:public修饰的数据成员和成员函数是公开的,所有的用户都可以进行调用。

2.private:private修饰词修饰的成员变量以及成员方法只供本类使用,也就是私有的,其他用户是不可调用的。

3.protected:protected修饰词修饰的成员变量以及成员方法在同一个包中无论是其子类还是普通类都可以调其使用,在不同包中只供其子类调用。

4.default:default修饰词修饰的成员变量以及成员方法在同一个包中无论是其子类还是普通类都可以调用,在不同包中即使是子类也不可调用,这一点与protected修饰词存在其两者明显的区别,谨记区分。

这里对于public和private修饰词不做明细的区分,因为这两个修饰词不存在不难懂的地方;下面就protected和default修饰词用以贴代码的形式进行其区分比较如下:

首先我们创建一个类:类中用protected修饰词修饰变量

在同一个包中有一个类继承了这个类的话,那么就可以使用这个protected修饰的变量,同时在同一个包中,即使没有继承上面的类的话也是可以使用protected修饰的变量a;

在不同的包中,直接访问protected修饰词修饰的变量a,是不可以的,如下:

在不同包中,如果是继承了protected修饰变量a的那个类的话,那就可以调用protected修饰变量a了;

我们再来看看默认default修饰词修饰的变量,也是首先创建一个默认修饰变量的类:

和protected修饰词一样。只要是在同一个包中,无论是普通类还是继承修饰变量的那个类都可以直接访问默认修饰词修饰的变量a;

在不同的包中,和protected一样,是不能直接使用default修饰词修饰的变量a的,如下:

在不同的包中,default修饰的变量,即使是继承类修饰变量的那个类也是不可以调用变量a的,这一点和protected存在本质的区别:

最后做了个总结:

private是只有本类中才能访问,public是都能访问,默认(包访问权限)是只有本包内才能访问,包括本包内的子类和普通类,而protected是只要本包内就能访问,包括本包内的子类和普通类,另外别的包内的子类也能访问,但是普通类不能访问。所以说protected和默认(包访问权限)是很相似的,在同一个包内,它们是一样的,而在另一个包内,默认是不能访问的,而protected是只有子类能访问。

为了美观的呈现区别以便看起来更容易区分,特附与表格一张:

修饰词public、private、protected、默认、四者之间的区别的更多相关文章

  1. 关于Java的权限修饰符(public,private,protected,默认friendly)

    以前对访问修饰符总是模棱两可,让自己仔细解释也是经常说不很清楚.这次要彻底的搞清楚. 现在总结如下: 一.概括总结 各个访问修饰符对不同包及其子类,非子类的访问权限 Java访问权限修饰符包含四个:p ...

  2. java作用域public ,private ,protected 及不写时的区别(转)

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

  3. java作用域public ,private ,protected 及不写时的区别

    说明部分转自:http://yangmingjiayou.iteye.com/blog/151865 在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,ba ...

  4. PHP public private protected 三种修饰符的区别

    public 表示全局,类内部外部子类都可以访问:private表示私有的,只有本类内部可以使用:protected表示受保护的,只有本类或子类或父类中可以访问:

  5. Java中public,private,protected,和默认的区别

    Java中public,private,protected,和默认的区别 1.private修饰词,表示成员是私有的,只有自身可以访问: 2.protected,表示受保护权限,体现在继承,即子类可以 ...

  6. public private protected和默认的区别(转自百度)

    public private protected和默认的区别 Java中对类以及类中的成员变量和成员方法通过访问控制符(access specifier)进行区分控制.刚学Java语言的同学可能对pu ...

  7. 深入浅出OOP(五): C#访问修饰符(Public/Private/Protected/Internal/Sealed/Constants)

    访问修饰符(或者叫访问控制符)是面向对象语言的特性之一,用于对类.类成员函数.类成员变量进行访问控制.同时,访问控制符也是语法保留关键字,用于封装组件. Public, Private, Protec ...

  8. php class中public,private,protected的区别,以及实例

    一,public,private,protected的区别 public:权限是最大的,可以内部调用,实例调用等. protected: 受保护类型,用于本类和继承类调用. private: 私有类型 ...

  9. 访问权限系列一(public/private/protected/default):成员变量

    通过两个程序包对自身或互相之间的访问,得到结果.(先编译Test_01,得到class文件,通过Test的集中访问情况) 如下Test.java中内容: package com.java; /* * ...

  10. public private protected default

    public private protected default 这几个限定访问控制符只是在编译阶段起作用,在运行阶段不起作用 private修饰符 , 本类可以访问 default修饰符 , 本类, ...

随机推荐

  1. CentOS安装redis.tar.gz

    1. # cd /usr/local/src 2. # tar -zxvf redis-3.0.6.tar.gz 3. # cd redis-3.0.6 4.# make 5.#  make PREF ...

  2. .NET Core和.NET Standard

    作为.NET家族的最新成员,有很多关于.NET Core和.NET Standard的误解,以及它们于.NET Framework之间的区别.在这篇文章,我会准确的解释他们究竟是什么,并看看何时应选择 ...

  3. HTML5和CSS3的一些学习记录

    1.引述块级文本的标签(blockquote): <blockquote cite="http://www.marktwainbooks.edu/"> <p> ...

  4. nvm+nodejs+npm

    安装nvm 1.下载nvm包,地址:https://github.com/coreybutler/nvm-windows/releases选择nvm-setup.zip下载, 解压,双击安装即可 2. ...

  5. day1作业(格式化输出)

    练习:用户输入姓名.年龄.工作.爱好 ,然后打印成以下格式------------ info of Egon -----------Name  : EgonAge   : 22Sex   : male ...

  6. for循环案例

    for循环案例 今天给大家介绍点for循环的案例 1.大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配? <!DOCTYPE html> &l ...

  7. tornado-版本迁移工具alembic

    pip install pymysql pip install sqlalchemy pip install alembic 1.connect db_config.py #coding=utf-8 ...

  8. 修改json文件

    第三方库jq https://stedolan.github.io/jq/manual/ cat old_deploy.json \ | jq --arg cpu_limit $cpu_limit ' ...

  9. IIS w3wp对应的应用程序

    IIS7以前我們用IISApp查看IIS哪些服務已啟動,但在IIS7已經不適用了,新語法是appcmd.exe list wp.你可以在%windir%\system32\inetsrv\底下找到ap ...

  10. python学习笔记_week20

    note 1.Django请求的生命周期 路由系统 -> 视图函数(获取模板+数据=>渲染) -> 字符串返回给用户 2.路由系统 /index/ -> 函数或类.as_vie ...