引言:Java的修饰符根据修饰的对象不同,分为类修饰符、方法修饰符、变量修饰符,其中每种修饰符又分为访问控制修饰符和非访问控制修饰符。

1、访问控制修饰符的总结

四个关键字:public、protected、default、private(他们决定了紧跟其后被定义的东西可以被谁使用)

2、对修饰符的理解

  在叙述protected修饰符使用之前,先来说一下java,可以发现,开发java程序是一个时时刻刻都在编写类、开发类、定义类的过程。类里面可以有main方法。(main方法不管存在那个类中,都要通过打点的方式调用某个类的成员)

  在当前类的定义中,main方法之外,可以直接通过成员的名字来使用本类中的成员变量,不管这个成员是什么访问修饰符修饰的,也不用通过对象打点调用的方式进行,当前类的main方法中,可以通过对象打点的方式调用。所以说访问控制修饰符在当前类的定义中相当于没有起到任何作用。但是java程序的开发,不仅仅是开发一个类而已,更多的是类之间的相互耦合,换句话说就是一个已经定义好的类,需要作为另一个类的成员,或者是成为另一个类的局部变量(在方法中声明的)、或者是成为基类被子类继承等,也只有在这个时候访问控制修饰符才会起到访问控制的作用。

  访问控制符中的private,和public是最好理解的。

3、代码测试

package com.example.test;

/**
* @author lin
* @version 1.0
* @date 2020/6/21 20:21
* @Description TODO
*/
public class Person {
   public String uname = "person 王 ";    public void introduceMyself() {
       System.out.println("com.example.test 包下:" + uname);
  }
}
package com.example.test;

/**
* @author lin
* @version 1.0
* @date 2020/6/21 20:21
* @Description TODO
*/
public class Student {
   Person p = new Person();    public void test() {
       System.out.println("com.example.test 包下:" + p.uname);
  }
}
package com.example.test;

/**
* @author lin
* @version 1.0
* @date 2020/6/21 20:21
* @Description TODO
*/
public class Teacher extends Person {
   public int age;
   Person p = new Person();    public void test1() {
       System.out.println("com.example.test 包下:" + p.uname);
  }
}
package com.example.test2;

/**
* @author lin
* @version 1.0
* @date 2020/6/21 20:22
* @Description TODO
*/
public class Person {
   public String uname = "haha";    public void test2() {
       System.out.println("com.example.test2 包下:" + uname);
  } }

测试类

package com.example.test;

/**
* @author lin
* @version 1.0
* @date 2020/6/21 20:23
* @Description TODO
*/
public class Test {
   public static void main(String[] args) {
       Person person = new Person();
       person.introduceMyself();
       Student student = new Student();
       student.test();
       Teacher teacher = new Teacher();
       teacher.test1();
       com.example.test2.Person person1 = new com.example.test2.Person();
       person1.test2();
  }
}

1、测试类的结果 显示public在上述均能访问到

2、用同样的四个类  来测试protected

在将Person中的uanme改为protected后  类Parents便报错了  The field Person.uname is not visible (说明不能跨包)

其他三个无影响

3、private

只有本类中可以访问 但是借助在Person类中有关uname的set、get方法便可以进行访问

4、default

测试结果说明 只能在本包中进行访问 在其他包  即使是继承关系 也无法进行访问,自己多试试。

5、Java 修饰符的更多相关文章

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

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

  2. Java修饰符关键词大全

    所以我以此主题写了这篇文章.这也是一个可用于测试你的计算机科学知识的面试问题. Java修饰符是你添加到变量.类和方法以改变其含义的关键词.它们可分为两组: 访问控制修饰符 非访问修饰符 让我们先来看 ...

  3. JAVA修饰符类型(转帖)

    JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的任何类均可以访问:protected的类.类属变量及方法,包内的 ...

  4. java修饰符public final static abstract transient

    JAVA 修饰符public final static abstract transient  关键字: public final static abstract ...  1.public prot ...

  5. Java基础之Java 修饰符

    前言:Java内功心法之Java 修饰符,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) Java语言提供了很多修饰符,主要分为以下两类: 访 ...

  6. 浅析java修饰符之public default protected private static final abstract

    浅析java修饰符之public default protected private static final abstract 一   修饰符的作用:用来定义类.方法或者变量,通常放在语句的最前端 ...

  7. 【java初探外篇01】——关于Java修饰符

    本文记录在学习Java语言过程中,对碰到的修饰符的一些疑问,在这里具体的拿出来详细学习和记录一下,以作后续参考和学习. Java修饰符 Java语言提供了很多修饰符,但主要分两类: 访问修饰符 非访问 ...

  8. Java知识回顾 (2) Java 修饰符

    一.Java 修饰符 1.1 访问控制修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default (即缺省,什么也不写): 在 ...

  9. Java-Runoob:Java 修饰符

    ylbtech-Java-Runoob:Java 修饰符 1.返回顶部 1. Java 修饰符 Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变 ...

  10. 03 Java 修饰符

    Java 修饰符主要分为两类: 访问修饰符 非访问修饰符 访问修饰符 public,对所有类可见 protected,对同一包内的类和子类可见 default,同一个包内的类可见 private,对当 ...

随机推荐

  1. 数据可视化基础专题(六):Pandas基础(五) 索引和数据选择器(查找)

    1.序言 如何切片,切块,以及通常获取和设置pandas对象的子集 2.索引的不同选择 对象选择已经有许多用户请求的添加,以支持更明确的基于位置的索引.Pandas现在支持三种类型的多轴索引. .lo ...

  2. tensorflw-gpu 运行 。py程序出现gpu不匹配的问题

    安装好了tensorflow-gpu版本,然后程序中写好了 with tf.device('/gpu:0'):   但是python3 .py程序时还是有错误. 报错为: 2018-04-24 12: ...

  3. Azure Web App (二)使用部署槽切换部署环境

    一,引言 前天我们将到使用Azure的 Pass 服务 “Web App” 去部署我们的.NET Core Web项目,也同时有介绍到如何在VS中配置登陆中国区的Azure账号,今天接着讲,我们部署完 ...

  4. JavaScript动画基础:canvas绘制简单动画

    动画是将静止的画面变为动态的艺术.实现由静止到动态,主要是靠人眼的视觉残留效应.视觉残留也叫视觉暂留现象,物体在快速运动时, 当人眼所看到的影像消失后,人眼仍能继续保留其影像0.1~0.4秒左右的图像 ...

  5. 操作句柄Handle(7)

    可以将Handle理解成访问对象的一个“句柄”.垃圾回收时对象可能被移动(对象地址发生改变),通过Handle访问对象可以对使用者屏蔽垃圾回收细节. Handle涉及到的相关类的继承关系如下图所示. ...

  6. bzoj3767A+B Problem加强版

    bzoj3767A+B Problem加强版 题意: 求两个数的和,每个数绝对值≤10^(10^7). 题解: 又用Python水过了…… 代码: a=raw_input() b=a.split() ...

  7. CSS上划线、下划线、删除线等方法

    text-decoration:underline;     下划线 text-decoration:overline;    顶划线 text-decoration:line-through;  删 ...

  8. OSCP Learning Notes - Scanning(2)

    Scanning with Metasploite: 1. Start the Metasploite using msfconsole 2. search modules 3.Choose one ...

  9. 如何在CSDN博客开头处加上版权声明?

    1.首先在CSDN账号头像处打开"管理博客"选项. 2.然后在管理博客界面左侧找到设置下面的"博客设置"选项. 3.将博客设置里的"版权声明" ...

  10. sublimeCLang配置报错以及sublime快捷键

    subimeClang需要手动配置我真的真的很服 记录一下满是报错的高光时刻 -------- 不过这个问题刚刚解决了 只要把所有的shared_ptr改成std::shared_ptr 就行 说白了 ...