说明:所谓访问权限,是指对象是否可以通过“.”运算符操作自己的变量或通过“.”运算符使用类中的方法。

1、Java中的四种访问修饰符:public、protected、default(无修饰符,默认)、private。

2、四种修饰符可修饰的成分(类、方法、成员变量)

public

protected

default

private

×

×(内部类可以用private修饰)

方法

成员变量

3、四种修饰符的访问权限

  public:对所有类可见

  protected:对同一包中的类可见、对同一包及不同包中的子类可见

  default:对同一包中的类可见、对同一包中的子类可见

  private:仅对类本身可见

  可见是可访问的意思,即由这些修饰符修饰的成分(类、方法、成员变量)可以被其它类访问。对子类可见即子类可以继承。

  这里需要注意的是protected与default,二者的区别在于不同包中的子类是否可以继承。

访问权限

同一包

同一包中的子类

不同包中的子类

不同包

public

protected

×

default

×

×

private

×

×

×

×

注:

 -  修饰符修饰变量或方法时:

-  一个类中的实例方法总是可以操作该类中的实例变量和类变量;类方法总是可以操作该类中的类变量,与访问权限没有关系。

-  private:如果Tom类中的某个成员是私有类变量(静态成员变量),那么在另外一个类中也不能通过类名Tom来操作这个私有类变量。如果Tom类中的某个方法是私有的类方法,那么在另外一个类中,也不能通过类名Tom来调用这个私有的类方法。

-  private:对于私有成员变量或方法,只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法。

-  public:当在任何一个类中用类Tom创建了一个对象后,该对象能访问自己的public变量和类中的public方法。

-  default:当在另外一个类中用类Tom创建了一个对象后,如果这个类与Tom类在同一个包中,那么该对象能访问自己的友好变量和友好方法。

-  default:在源文件中编写命名的类总是在同一个包中。如果源文件使用import语句引入了另外一个包中的类,并用该类创建了一个对象,那么该类的这个对象将不能访问自己的友好变量和友好方法。

-  protected:当在另外一个类中用类Tom创建了一个对象后,如果这个类与类Tom在同一个包中,那么该对象能访问自己的protected变量和protected方法。

*  修饰符修饰类时:

*  可以在任何另外一个类中,使用public类创建对象。

*  如果一个类不加public修饰,这样的类被称为友好类,那么在另外一个类中使用友好类创建对象时,要保证它们在同一个包中。

部分引用:https://www.cnblogs.com/deltadeblog/p/7123661.html

java-权限修饰符的区别的更多相关文章

  1. Java 权限修饰符

    Java应用有很多类,但有些类并不希望被其他类使用.每个类中都有数据成员和方法成员,但是并不是每个数据和方法,都允许在其他类中调用.如何能做到访问控制呢?就需要使用访问权限修饰符. Java语言中的访 ...

  2. private/默认/protected/public权限修饰符的区别

    private/默认/protected/public权限修饰符和面向对象的三大特性的封装性有着密切关系.它们都可以修饰类的成员,其中的默认和public还可以修饰类. 类的成员包括:成员变量.成员方 ...

  3. 10-04 Java 权限修饰符,类及其组成常见的修饰符

    四种权限修饰符的测试 /* 权限修饰符: 本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类) private Y 默认 Y Y protected Y Y Y public Y Y ...

  4. java权限修饰符

  5. java之四种权限修饰符

    java权限修饰符piublic.protected.private.置于类的成员定义前,用来限定对象对该类成员的访问权限. 修饰符 类内部 同一个包 子类 任何地方 private yes     ...

  6. final、以及public、protected、(default)、private权限修饰符总结

    package cn.learn.Final; /* 当final用来修饰类 1.该类不能有任何子类,成员方法均无法覆盖重写,但可以重写父类的方法 当final用来修饰方法 1.该方法不能被覆盖重写 ...

  7. Java中权限修饰符public、private、protected和default的区别

    1.public 可以修饰类.成员变量和成员函数,没有任何限制,同一个包中,或者不同包中的类都可以自由访问 2.private 可以修饰成员变量和成员函数,只能在本类中使用 3.default (不写 ...

  8. java中四种权限修饰符区别

    总的概括:public > protected > (default) > private 细分见下表格: 权限修饰符 public protected (default) priv ...

  9. Java访问权限修饰符public protected friendly private用法总结(转载好文Mark)

    首先声明:Java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly.为了条理清晰,分三种不同情况来总结. 一 访问权限修饰符修饰成员变量和 ...

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

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

随机推荐

  1. HTTP、TCP、UDP的区别

    TCP.UDP的区别 1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2.TCP提供可靠的服务.也就是说,通过TCP连接传送的数据,无差错,不丢失,不重 ...

  2. Linux command nmon

    Linux command nmon [Purpose]        Learning linux command nmon   [Eevironment]        Ubuntu 16.04 ...

  3. Python Django 之 简单入门

    一.下载Django并安装 1.下载Django 2.安装 二.新建Django project 1.使用django-admin新建mysite 项目 django-admin startproje ...

  4. Grafana的安裝(一)

    Grafana的安裝 grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建.共享.浏览数据.dashboard中显示了你不同metric数据源中的数据 Granafa的安裝 ...

  5. C++基础知识:操作符重载

    1.C++标准库: C++标准库并不是C++语言的一部分C++标准库是由C++语言编写而成的类库和函数的集合C++标准库中定义的类和对象都位于std命名空间中C++标准库的头文件都不带.h后缀C++标 ...

  6. loadrunner请求json数据参数化问题

    http://blog.sina.com.cn/s/blog_62079f620102vvx3.html

  7. redis 解析配置文件

    在redis安装文件夹里面有redis.conf,查看配置. 一:基础配置介绍 1.units(单位) --这里可以看到 1k和1kb是不一样的,  units 这里单位是不区分大小写的,are al ...

  8. 实力封装:Unity打包AssetBundle(番外篇)

    前情提要:第二种打包方式. 自定义AssetBundle包扩展名 在之前的教程中,我们已经多次提到过扩展名了,并且也已经说明了如何设置自定义的AssetBundle扩展名.至于为什么还要把它单独拿出来 ...

  9. <Flume><Source Code><Flume源码阅读笔记>

    Overview source采集的日志首先会传入ChannelProcessor, 在其内首先会通过Interceptors进行过滤加工,然后通过ChannelSelector选择channel. ...

  10. winform datatable 或datagridview中添加列

    DataGridViewCheckBoxColumn dg = new DataGridViewCheckBoxColumn(); dg.HeaderText = "选择"; dg ...