5、Java 修饰符
引言: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 修饰符的更多相关文章
- JAVA修饰符类型(public,protected,private,friendly)
转自:http://www.cnblogs.com/webapplee/p/3771708.html JAVA修饰符类型(public,protected,private,friendly) publ ...
- Java修饰符关键词大全
所以我以此主题写了这篇文章.这也是一个可用于测试你的计算机科学知识的面试问题. Java修饰符是你添加到变量.类和方法以改变其含义的关键词.它们可分为两组: 访问控制修饰符 非访问修饰符 让我们先来看 ...
- JAVA修饰符类型(转帖)
JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的任何类均可以访问:protected的类.类属变量及方法,包内的 ...
- java修饰符public final static abstract transient
JAVA 修饰符public final static abstract transient 关键字: public final static abstract ... 1.public prot ...
- Java基础之Java 修饰符
前言:Java内功心法之Java 修饰符,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) Java语言提供了很多修饰符,主要分为以下两类: 访 ...
- 浅析java修饰符之public default protected private static final abstract
浅析java修饰符之public default protected private static final abstract 一 修饰符的作用:用来定义类.方法或者变量,通常放在语句的最前端 ...
- 【java初探外篇01】——关于Java修饰符
本文记录在学习Java语言过程中,对碰到的修饰符的一些疑问,在这里具体的拿出来详细学习和记录一下,以作后续参考和学习. Java修饰符 Java语言提供了很多修饰符,但主要分两类: 访问修饰符 非访问 ...
- Java知识回顾 (2) Java 修饰符
一.Java 修饰符 1.1 访问控制修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default (即缺省,什么也不写): 在 ...
- Java-Runoob:Java 修饰符
ylbtech-Java-Runoob:Java 修饰符 1.返回顶部 1. Java 修饰符 Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变 ...
- 03 Java 修饰符
Java 修饰符主要分为两类: 访问修饰符 非访问修饰符 访问修饰符 public,对所有类可见 protected,对同一包内的类和子类可见 default,同一个包内的类可见 private,对当 ...
随机推荐
- 数据可视化之PowerQuery篇(一)空值(null)运算的的解决思路
https://zhuanlan.zhihu.com/p/81535007 星友们在知识星球(PowerBI星球)提出的问题中,关于空值的运算经常被提及.平时接触到的源数据常常有空值,比如Excel数 ...
- Python之网络编程 Socket编程
本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实 ...
- Python并发编程05 /死锁现象、递归锁、信号量、GIL锁、计算密集型/IO密集型效率验证、进程池/线程池
Python并发编程05 /死锁现象.递归锁.信号量.GIL锁.计算密集型/IO密集型效率验证.进程池/线程池 目录 Python并发编程05 /死锁现象.递归锁.信号量.GIL锁.计算密集型/IO密 ...
- OSCP Learning Notes - Capstone(4)
SickOS 1.2 Walkthrough Preparation: Down load the SickOS virtual machines from the following website ...
- STL源码剖析:仿函数
仿函数就是函数对象 函数对象: 重载了operator()的类对象 使用起来和普通函数一致,所以称为函数对象或是仿函数 STL中对于仿函数的参数进行了特殊处理,定义了两个特殊类,类里面只有类型定义 一 ...
- 《Head First 设计模式》:工厂方法模式
正文 一.定义 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个.工厂方法让类把实例化推迟到子类. PS:在设计模式中,"实现一个接口"泛指实现某个超类型(可 ...
- 题解 洛谷 P4899 【[IOI2018] werewolf 狼人】
先考虑狼形,其只能走编号小于\(R\)的点.若将每条边赋边权为其两端点编号的较大值,然后按最小生成树的顺序构建\(Kruskal\)重构树. 那么从原图的一个点\(x\)在树上倍增,到达满足要求且深度 ...
- 五分钟快速搭建Serverless免费邮件服务
1. 引言 本文将带你快速基于 Azure Function 和 SendGrid 构建一个免费的Serverless(无服务器)的邮件发送服务,让你感受下Serverless的强大之处. 该服务可以 ...
- 2020年最新.NET面试题
.net 面试题最新版 2020-2-26 每日几道面试题1. .NET和C#有什么区别答:.NET一般指 .NET FrameWork框架,它是一种平台,一种技术.C#是一种编程语言,可以基于. ...
- Pexpect模块的简单使用
Pexpect 是一个用来启动子程序并对其进行自动控制的 Python 模块. Pexpect 可以用来和像 ssh.ftp.passwd.telnet 等命令行程序进行自动交互.以下所有代码都是在K ...