java default string_Java--default详解
下表为Java访问控制符的含义和使用情况
类内部
本包
子类
外部包
public
√
√
√
√
protected
√
√
√
×
default
√
√
×
×
private
√
×
×
×
通过此表一目了然。
public:Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。
private:Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
protected:介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
default:即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。
相信public、protected、private大家都特别清楚,现在主要通过反射机制来验证下default。
先定义一个抽象类FourModifier,如下:
package com.common.fourmodifier;
//没有访问控制符修饰,
abstract class FourModifier {
private int age;
//default
String name;
}
然后定义一个SubFourModifier类继承FourModifier,并位于同一个package下,如下
package com.common.fourmodifier;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
//与父类在同一个package下
public class SubFourModifier extends FourModifier{
public static void main(String[] args) {
System.out.println("类修饰符:"+Modifier.toString(FourModifier.class.getModifiers()));
//反射获取所有声明成员变量(包括私有)
Field[] field = FourModifier.class.getDeclaredFields();
for(Field f:field){
if("".equals(Modifier.toString(f.getModifiers()))){
System.out.println("field:default "+f.getName());//缺省情况下默认为default,所以获取修饰符为""
}else{
System.out.println("field:"+Modifier.toString(f.getModifiers())+" "+f.getName());
}
}
}
}
运行结果如下:
或许现在你会觉得可以在子类访问分类的default成员变量,错!
那么现在试试新建一个package,并在此package下新建一个类继承FourModifier,如下:
由于粘代码不能显示错误,直接上图,你会发现直接编译报错,因为FourModifier类没有声明访问控制类型,默认为default,而default只能在同一个package下访问类成员变量,无论是不是子类。
若FourModifier类加上public修饰符,上述程序正常运行,结果如下:
每日一语:多思考多总结。
java default string_Java--default详解相关推荐
- Java之toString()方法详解
Java之toString()方法详解 Java中 toString()方法在Object类中和Intent类中都有定义,作用类似,但显示形式有点区别 一.Object类中toString()方法 t ...
- Java开发环境搭建详解
Java开发环境搭建详解 http://topic.csdn.net/u/20110829/13/BF4FAA45-3E1A-48A8-BC46-0405B7F862A2.html 一.jdk安装与 ...
- Java单元测试之JUnit4详解
2019独角兽企业重金招聘Python工程师标准>>> Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @B ...
- java -jar 和 -cp详解
java -jar 和 -cp详解 命令行执行程序 假如我们有一个程序,把它打包成Test.jar,如何运行才能成功输出Hello World package com.test; public cla ...
- java访问修饰符详解——学java,零基础不怕,不只要理论,更要实践+项目,a href=http://www.bjweixin.com太原维信科技提供 /a...
java访问修饰符详解--学java,零基础不怕,不只要理论,更要实践+项目 <a href=http://www.bjweixin.com>太原维信科技提供 </a> pub ...
- Java编程配置思路详解
Java编程配置思路详解 SpringBoot虽然提供了很多优秀的starter帮助我们快速开发,可实际生产环境的特殊性,我们依然需要对默认整合配置做自定义操作,提高程序的可控性,虽然你配的不一定比官 ...
- Java 8 Stream API详解--转
原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java 8引入 ...
- 你真的弄明白了吗?Java并发之AQS详解
你真的弄明白了吗?Java并发之AQS详解 带着问题阅读 1.什么是AQS,它有什么作用,核心思想是什么 2.AQS中的独占锁和共享锁原理是什么,AQS提供的锁机制是公平锁还是非公平锁 3.AQS在J ...
- java定时任务框架elasticjob详解
这篇文章主要介绍了java定时任务框架elasticjob详解,Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架.该项目基于成熟的开源产品Quartz和Zo ...
- Java RMI远程方法调用详解
Java RMI远程方法调用详解 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51992182 一.Java R ...
最新文章
- git 裁切_裁切参数设计(DOE试验)
- 时间的玫瑰+但斌的投资思维
- fail-fast(快速失败/报错机制)-ConcurrentModificationException
- html语言可以写模版继承吗,16-Django的模板语言(变量,标签,过滤器,继承,html转义)...
- 【Luogu】P1383高级打字机
- 前端学习(95):ps基本操作与图片格式
- mysql 提交乱码问题_mysql数据库乱码问题
- linux下limits.conf 修改不生效的原因
- .Net中消除Dll中的dependency
- 微信弹出遮罩层引导用户浏览器打开升级版
- java 控制随机概率_【功能实现】实现设置概率的随机数
- 网站站内seo优化简介
- 数据结构(10)广义表的介绍与代码实现(c语言)
- 售前工程师与售后工程师
- API Promise化
- 笑死人不偿命的程序员内涵段子
- tooth的用法_关于tooth的用法总结大全
- session 超时时间设置
- Capabilities
- 微软mta国际认证的python编程考试_易讯教育将于8月推出微软MTA国际认证98-381:Python编程应用考试...