一、public

  同一个package

  1.本类内部

public class A {
public int f=1;
public void m1() {} public void m2() {
f=2; //类内部正常访问
m1(); //类内部正常访问
}
}

   2.子类

package same;

public class A {
public int f=1;
public void m1() {}
}
package same;

public class B extends A {
public void m2() {
f=2; //调用父类的public成员变量
m1(); //调用父类的public成员方法
}
}

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

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

  不同package之间

  1.子类

package same;

public class A {
public int f=1;
public void m1() {}
}
package other;

import same.A;

public class B extends A {
public void m2() {
f=2; //对类A的的public成员变量访问
m1(); //对类A的的public成员方法访问
}
}

  

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

package same;

public class A {
public int f=1;
public void m1() {}
}
package other;

import same.A;

public class B  {
public static void main(String[] args) {
A a=new A();
a.f=2; //不同包之间 对类A的对像里面的public成员变量访问
a.m1(); //不同包之间 对类A的对像里面的public成员方法访问
}
}

二、protected

 同一个package

  1.本类内部

package same;

public class A {
protected int f=1;
protected void m1() {} public void m2() {
f=2; //访问本类的protected成员变量
m1(); //访问本类的protected成员方法
}
}

  2.子类

package same;

public class A {
protected int f=1;
protected void m1() {}
}
package same;

public class B extends A {
public void m2() {
f=2; //访问父类的protected成员变量
m1(); //访问父类的protected成员方法
}
}

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

package same;

public class A {
protected int f=1;
protected void m1() {}
}
package same;

public class B  {
public void m2() {
A a=new A();
a.f=2; //访问A类对像的protected成员变量
a.m1(); //访问A类对像的protected成员方法
}
}

  不同package之间

  1.子类

package same;

public class A {
protected int f=1;
protected void m1() {}
}
package other;

import same.A;

public class B extends A {
public void m2() {
f=2; //对类A的的protected成员变量访问
m1(); //对类A的的protected成员方法访问
}
}

  

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

package same;

public class A {
protected int f=1;
protected void m1() {}
}
package other;

import same.A;

public class B {
public void m2() {
A a=new A();
//a.f=2; 无法对类A对像的protected成员变量访问
//a.m1(); 无法对类A对像的protected成员变量方法
}
}

三、default

 同一个package

  1.本类内部

package same;

public class A {
int f=1;
void m1() {} public void m2() {
f=2; //访问本类的default成员变量
m1(); //访问本类的default成员方法
}
}

  2.子类

package same;

public class A {
int f=1;
void m1() {}
}
package same;

public class B extends A {
public void m2() {
f=2; //访问A类对像的default成员变量
m1(); //访问A类对像的default成员方法
}
}

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

package same;

public class A {
int f=1;
void m1() {}
}
package same;

public class B  {
public void m2() {
A a=new A();
a.f=2; //访问A类对像的default成员变量
a.m1(); //访问A类对像的default成员方法
}
}

  不同package之间

  1.子类

package same;

public class A {
int f=1;
void m1() {}
}
package other;

import same.A;

public class B extends A {
public void m2() {
//f=2; 无法对类A的default成员变量访问
//m1(); 无法对类A的default成员变量方法
}
}

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

package same;

public class A {
int f=1;
void m1() {}
}
package other;

import same.A;

public class B  {
public void m2() {
A a=new A();
//a.f=2; 无法对类A对像的default成员变量访问
//a.m1(); 无法对类A对像的default成员变量方法
}
}

四、private

  同一个package

  1.本类内部

package same;

public class A {
private int f=1;
private void m1() {}
public void m2() {
f=2; //访问本类的private成员变量
m1(); //访问本类的private成员方法
}
}

  2.子类

package same;

public class A {
private int f=1;
private void m1() {}
}
package same;

public class B extends A {
public void m2() {
//f=2; 无法访问A类的private成员变量
//m1(); 无法访问A类的private成员方法
}
}

  

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

package same;

public class A {
private int f=1;
private void m1() {}
}
package same;

public class B {
public void m2() {
A a =new A();
//a.f=2; 无法访问A类对像的private成员变量
//a.m1(); 无法访问A类对像的private成员方法
}
}

  不同package之间

  1.子类

package same;

public class A {
private int f=1;
private void m1() {}
}
package other;

import same.A;

public class B extends A {
public void m2() {
//f=2; 无法对类A的private成员变量访问
//m1(); 无法对类A的private成员变量方法
}
}

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

package same;

public class A {
private int f=1;
private void m1() {}
}
package other;

import same.A;

public class B  {
public void m2() {
A a=new A();
//a.f=2; 无法对类A对像的private成员变量访问
//a.m1(); 无法对类A对像的private成员变量方法
}
}

从实例角度分析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. 浏览器环境下JavaScript脚本加载与执行探析之代码执行顺序

    本文主要基于向HTML页面引入JavaScript的几种方式,分析HTML中JavaScript脚本的执行顺序问题 1. 关于JavaScript脚本执行的阻塞性 JavaScript在浏览器中被解析 ...

  2. Spring IOC 容器源码分析 - 获取单例 bean

    1. 简介 为了写 Spring IOC 容器源码分析系列的文章,我特地写了一篇 Spring IOC 容器的导读文章.在导读一文中,我介绍了 Spring 的一些特性以及阅读 Spring 源码的一 ...

  3. .NetCore WebApi + Vue +MySql搭建博客

    因为我是一直写C#的,所以最近闲暇时间一直在学习.NET Core,该博客的后端使用的就是.NET Core WebApi然后加前端Vue. 首先后端.NET Core搭的框架是一个仓储层+服务层+A ...

  4. jQuery基础(4)- 位置信息、事件流、事件对象、事件代理、jquery事件

    一.jQuery的位置信息 jQuery的位置信是JS的client系列.offset系列.scroll系列封装好的一些简便api. 1.宽度和高度 a.获取宽度和高度,例如: .width() // ...

  5. Spring Boot中使用Swagger2构建RESTful API文档

    在开发rest api的时候,为了减少与其他团队平时开发期间的频繁沟通成本,传统做法我们会创建一份RESTful API文档来记录所有接口细节,然而这样的做法有以下几个问题: 1.由于接口众多,并且细 ...

  6. 个人网站搭建时linux中的相关配置记录(mysql,jdk,nginx,redis)

    一.开发计划(包括准备工作,网站大致需求等) 二.服务器(linux/centos)购买.相应环境配置(jdk),软件安装(mysql, nginx, redis).域名解析 三.原型图.代码开发(v ...

  7. day 74 vue 2 axios数据请求 以及组件的学习

    前情提要:   vue 学习二: 一: 通过axios实现数据请求 1:json数据语法 json数据对象类似于JavaScript中的对象,但是它的键对应的值里面是没有函数方法的,值可以是普通变量, ...

  8. Linux 学习错误点整理之网络配置

    本人是一名实习生,最近在学习Linux,在实操的过程中还是遇到了一些问题,所以想记录下来,供自己以后复习,也希望能给跟我一样的菜鸟的人带来一点点帮助. 我用的是VMware Workstation P ...

  9. Centos 7 开启BBR

    # 升级内核 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elr ...

  10. numpy中int类型与python中的int

    [code] import numpy as np nparr = np.array([[1 ,2, 3, 4]]) np_int32 = nparr[0][0] # np_int=1 py_int ...