一、public

  同一个package

  1.本类内部

  1. public class A {
  2. public int f=1;
  3. public void m1() {}
  4.  
  5. public void m2() {
  6. f=2; //类内部正常访问
  7. m1(); //类内部正常访问
  8. }
  9. }

   2.子类

  1. package same;
  2.  
  3. public class A {
  4. public int f=1;
  5. public void m1() {}
  6. }
  1. package same;
  2.  
  3. public class B extends A {
  4. public void m2() {
  5. f=2; //调用父类的public成员变量
  6. m1(); //调用父类的public成员方法
  7. }
  8. }

   3.其它类通过类对像访问对像成员

  1. package same;
  2. public class A {
  3. public int f=1;
  4. public void m1() {}
  5. }
  1. package same;
  2. public class B {
  3. public static void main(String[] args) {
  4. A a =new A();
  5. a.f=2; //同一个包内 对类A的对像里面的public成员变量访问
  6. a.m1(); //同一个包内 对类A的对像里面的public成员方法访问
  7. }
  8. }

  不同package之间

  1.子类

  1. package same;
  2.  
  3. public class A {
  4. public int f=1;
  5. public void m1() {}
  6. }
  1. package other;
  2.  
  3. import same.A;
  4.  
  5. public class B extends A {
  6. public void m2() {
  7. f=2; //对类A的的public成员变量访问
  8. m1(); //对类A的的public成员方法访问
  9. }
  10. }

  

  2.其它类通过类对像访问对像成员

  1. package same;
  2.  
  3. public class A {
  4. public int f=1;
  5. public void m1() {}
  6. }
  1. package other;
  2.  
  3. import same.A;
  4.  
  5. public class B {
  6. public static void main(String[] args) {
  7. A a=new A();
  8. a.f=2; //不同包之间 对类A的对像里面的public成员变量访问
  9. a.m1(); //不同包之间 对类A的对像里面的public成员方法访问
  10. }
  11. }

二、protected

 同一个package

  1.本类内部

  1. package same;
  2.  
  3. public class A {
  4. protected int f=1;
  5. protected void m1() {}
  6.  
  7. public void m2() {
  8. f=2; //访问本类的protected成员变量
  9. m1(); //访问本类的protected成员方法
  10. }
  11. }

  2.子类

  1. package same;
  2.  
  3. public class A {
  4. protected int f=1;
  5. protected void m1() {}
  6. }
  1. package same;
  2.  
  3. public class B extends A {
  4. public void m2() {
  5. f=2; //访问父类的protected成员变量
  6. m1(); //访问父类的protected成员方法
  7. }
  8. }

  3.其它类通过类对像访问对像成员

  1. package same;
  2.  
  3. public class A {
  4. protected int f=1;
  5. protected void m1() {}
  6. }
  1. package same;
  2.  
  3. public class B {
  4. public void m2() {
  5. A a=new A();
  6. a.f=2; //访问A类对像的protected成员变量
  7. a.m1(); //访问A类对像的protected成员方法
  8. }
  9. }

  不同package之间

  1.子类

  1. package same;
  2.  
  3. public class A {
  4. protected int f=1;
  5. protected void m1() {}
  6. }
  1. package other;
  2.  
  3. import same.A;
  4.  
  5. public class B extends A {
  6. public void m2() {
  7. f=2; //对类A的的protected成员变量访问
  8. m1(); //对类A的的protected成员方法访问
  9. }
  10. }

  

  2.其它类通过类对像访问对像成员

  1. package same;
  2.  
  3. public class A {
  4. protected int f=1;
  5. protected void m1() {}
  6. }
  1. package other;
  2.  
  3. import same.A;
  4.  
  5. public class B {
  6. public void m2() {
  7. A a=new A();
  8. //a.f=2; 无法对类A对像的protected成员变量访问
  9. //a.m1(); 无法对类A对像的protected成员变量方法
  10. }
  11. }

三、default

 同一个package

  1.本类内部

  1. package same;
  2.  
  3. public class A {
  4. int f=1;
  5. void m1() {}
  6.  
  7. public void m2() {
  8. f=2; //访问本类的default成员变量
  9. m1(); //访问本类的default成员方法
  10. }
  11. }

  2.子类

  1. package same;
  2.  
  3. public class A {
  4. int f=1;
  5. void m1() {}
  6. }
  1. package same;
  2.  
  3. public class B extends A {
  4. public void m2() {
  5. f=2; //访问A类对像的default成员变量
  6. m1(); //访问A类对像的default成员方法
  7. }
  8. }

 3.其它类通过类对像访问对像成员

  1. package same;
  2.  
  3. public class A {
  4. int f=1;
  5. void m1() {}
  6. }
  1. package same;
  2.  
  3. public class B {
  4. public void m2() {
  5. A a=new A();
  6. a.f=2; //访问A类对像的default成员变量
  7. a.m1(); //访问A类对像的default成员方法
  8. }
  9. }

  不同package之间

  1.子类

  1. package same;
  2.  
  3. public class A {
  4. int f=1;
  5. void m1() {}
  6. }
  1. package other;
  2.  
  3. import same.A;
  4.  
  5. public class B extends A {
  6. public void m2() {
  7. //f=2; 无法对类A的default成员变量访问
  8. //m1(); 无法对类A的default成员变量方法
  9. }
  10. }

  2.其它类通过类对像访问对像成员

  1. package same;
  2.  
  3. public class A {
  4. int f=1;
  5. void m1() {}
  6. }
  1. package other;
  2.  
  3. import same.A;
  4.  
  5. public class B {
  6. public void m2() {
  7. A a=new A();
  8. //a.f=2; 无法对类A对像的default成员变量访问
  9. //a.m1(); 无法对类A对像的default成员变量方法
  10. }
  11. }

四、private

  同一个package

  1.本类内部

  1. package same;
  2.  
  3. public class A {
  4. private int f=1;
  5. private void m1() {}
  6. public void m2() {
  7. f=2; //访问本类的private成员变量
  8. m1(); //访问本类的private成员方法
  9. }
  10. }

  2.子类

  1. package same;
  2.  
  3. public class A {
  4. private int f=1;
  5. private void m1() {}
  6. }
  1. package same;
  2.  
  3. public class B extends A {
  4. public void m2() {
  5. //f=2; 无法访问A类的private成员变量
  6. //m1(); 无法访问A类的private成员方法
  7. }
  8. }

  

  3.其它类通过类对像访问对像成员

  1. package same;
  2.  
  3. public class A {
  4. private int f=1;
  5. private void m1() {}
  6. }
  1. package same;
  2.  
  3. public class B {
  4. public void m2() {
  5. A a =new A();
  6. //a.f=2; 无法访问A类对像的private成员变量
  7. //a.m1(); 无法访问A类对像的private成员方法
  8. }
  9. }

  不同package之间

  1.子类

  1. package same;
  2.  
  3. public class A {
  4. private int f=1;
  5. private void m1() {}
  6. }
  1. package other;
  2.  
  3. import same.A;
  4.  
  5. public class B extends A {
  6. public void m2() {
  7. //f=2; 无法对类A的private成员变量访问
  8. //m1(); 无法对类A的private成员变量方法
  9. }
  10. }

  2.其它类通过类对像访问对像成员

  1. package same;
  2.  
  3. public class A {
  4. private int f=1;
  5. private void m1() {}
  6. }
  1. package other;
  2.  
  3. import same.A;
  4.  
  5. public class B {
  6. public void m2() {
  7. A a=new A();
  8. //a.f=2; 无法对类A对像的private成员变量访问
  9. //a.m1(); 无法对类A对像的private成员变量方法
  10. }
  11. }

从实例角度分析java的public、protected、private和default访问权限的更多相关文章

  1. [学习笔记]Java的public,protected,private,缺省的作用域

    0.引言 Java的访问指示符public,protected,private,缺省可以用来修饰类和方法. 1.作用域如下 具体如下: 作用域       当前类    同一package   子孙类 ...

  2. C++中public/protect/private三种访问权限控制

    一.成员访问权限控制 1.public (1)public成员变量可以被成员函数访问  [访问性] (2)public成员可以被实体对象访问  [访问性] (3)public成员可以成为子类成员  [ ...

  3. C++:继承访问属性(public/protected/private)

    • 公有继承(public) 公有继承在C++中是最常用的一种继承方式,我们先来看一个示例: #include<iostream> using namespace std; class F ...

  4. 从虚拟机指令执行的角度分析JAVA中多态的实现原理

    从虚拟机指令执行的角度分析JAVA中多态的实现原理 前几天突然被一个"家伙"问了几个问题,其中一个是:JAVA中的多态的实现原理是什么? 我一想,这肯定不是从语法的角度来阐释多态吧 ...

  5. JAVA修饰符类型(public,protected,private,friendly)

    转自:http://www.cnblogs.com/webapplee/p/3771708.html JAVA修饰符类型(public,protected,private,friendly) publ ...

  6. JAVA类型修饰符(public,protected,private,friendly)

    JAVA类型修饰符(public,protected,private,friendly) public的类.类属变量及方法.包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包 ...

  7. php public protected private属性实例详解

    php 类中函数和类变量都有三个属性:public protected private,具体什么时候使用什么属性好纠结,特意找了个实例,这样看起来更清晰. public 表示全局,类内部外部子类都可以 ...

  8. 004-对象——public protected private PHP封装的实例

    <?php /** *public protected private PHP封装的实例 */ /*class tv { private $shengyin; function __constr ...

  9. 【转】C++易混知识点5:实例讲解Public Protected Private作用域,继承的区别和用意

    大学生涯,涉及到类的作用域,继承都是用的public 共有继承,当时也没想那么多,觉得共有继承多方便,多简单,反正没有太多的限制,不管是类的成员或者是基类的成员函数都可以访问.没有深究.其实这里面真是 ...

随机推荐

  1. Python小白学习之路(二十五)—【装饰器的应用】

    通过一个任务来加深对装饰器的理解和应用 回顾:装饰器的框架 def timmer(func): def wrapper(): func() return wrapper 任务:给以下正在运行的程序加一 ...

  2. defer 的常用场景

    将panic的转化为error类型值,并将其作为函数值返回给调用方 package main import "fmt" func divide(a, b int) (res int ...

  3. vue教程3-04 vue.js vue-devtools 调试工具的下载安装和使用

    vue教程3-04 vue.js vue-devtools vue调试工具的安装和使用 一.vue-devtools 下载与安装 1.需要 fan qiang 2.打开谷歌浏览器设置--->扩展 ...

  4. KVM的VPS主机在Centos6.x下修改系统时间

    显示系统时间 # date "+%Y-%m-%d %H:%M:%S" 修改系统时区 # cp /usr/share/zoneinfo/Asia/Shanghai /etc/loca ...

  5. Java之ServiceLoader

    转载请注明源出处:http://www.cnblogs.com/lighten/p/6946683.html 1.简介 JDK1.6之后,java.util包下多了一个类ServiceLoader,其 ...

  6. LSP劫持症状及解决方案

    [症状] 1.网络连接正常,win7诊断显示无问题,但打开网页很迅速的显示该页无法显示,好像浏览器并没有提交任何url就做出了反应一样,输入其他网址,有时候也出现等候很久最终也是无法上网,firefo ...

  7. Google Chrome Native Messaging开发实录(二)Chrome Extension扩展

    接上一篇<Google Chrome Native Messaging开发实录(一)背景介绍>的项目背景,话不多说,有关Chrome Extension介绍和文档就不展开了,直接上代码. ...

  8. 手把手教你封装 Vue 组件并使用 NPM 发布

    Vue 开发插件 我们可以先查看Vue的插件的开发规范 我们开发的之后期望的结果是支持 import.require 或者直接使用 script 标签的形式引入,就像这样: ps: 这里注意一下包的名 ...

  9. Android开发之漫漫长途 Ⅶ——Android消息机制(Looper Handler MessageQueue Message)

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  10. Spring mvc 4系列教程(一)

    一.Spring框架概览 Spring框架是一种轻量级.一站式解决企业级应用的解决方案.不仅如此,Spring的模块化的特点,可以使你只引用所需要的部分,而无需引用全部.你可以使用控制反转容器(IoC ...