java protected用法_深入理解Java的protected修饰符
其实Java的protected修饰符,权限定义的很微妙,大致有以下几种:
(1)protected控制符用于修饰方法和成员变量;
(2)一个类的protected方法或成员变量,在包外是不能通过该类对象进行访问的,即便在该类的子类中也不可这么做;
在该类包外的子类中能访问的只是子类自己继承来的protected 方法和属性,即可以用super来访问;
(3)在包外的子类中,不能用另外一个子类的对象访问父类中的protected变量,尽管这两个子类继承自同一个父类;
(4)在包内,则可以;
(5)而对于protected的静态变量,在子类中可以直接访问,在不同包的非子类中则不可访问;
(6)对于protected的用法,其实是遵循了OOP的一个原则,方法和成员变量被继承后,其可见的范围只能扩大,不能缩小;
父类:Test.java
package test1;
public class Test {
protected String getNumber() {
return "test";
}
}
不同包的子类:ProtectedTest2.java
package test2;
import test1.Test;
public class ProtectedTest2 extends Test {
public void test1() {
//无法访问:无法通过父类的引用来访问
Test test = new Test();
Test test1 = new ProtectedTest2();
//test1.getNumber();
//test.getNumber();
}
public void test2() {
//可以访问:可以通过继承的super来访问,或直接不用super;
getNumber();
super.getNumber();
}
public void test3() {
//可以访问:通过子类对象来访问;
ProtectedTest2 pTest2 = new ProtectedTest2();
pTest2.getNumber();
}
public void test4() {
//无法访问:包外的子类中,不能用另一个子类的对象访问父类的protected变量,尽管这两个子类继承自同一个父类;
ProtectedTest3 pTest1 = new ProtectedTest3();
//pTest1.getNumber();
}
}
不同包的子类ProtectedTest3.java
package test2;
import test1.Test;
public class ProtectedTest3 extends Test{
}
同包的子类ProtectedTest1.java
package test1;
import test2.ProtectedTest3;
public class ProtectedTest1 {
public static void main(String[] args) {
Test test = new Test();
test.getNumber();
//在同包中访问 和父类不在同一包的子类,可以访问;
ProtectedTest3 pt = new ProtectedTest3();
pt.getNumber();
}
}
java protected用法_深入理解Java的protected修饰符相关推荐
- java中demo接人_return的用法_如何理解java中return的用法?
C语言中return用法?(请熟练者进) return是返回值,这个返回值是和函数的类型有关的,函数的类型是什么,他的返回值就是什么 比方主函数intmain() {}这里就必须有一个return,只 ...
- 简述java中的注释以及用法_怎样理解 Java 注解和运用注解编程?
正好最近在公众号(BetterAndroid)发了一篇关于注解的文章,贴在这里吧,希望对题主有帮助. 一.什么是注解 我们都知道在Java代码中使用注释是为了提升代码的可读性,也就是说,注释是给人看的 ...
- java枚举类型enum用法_深入理解java枚举类型enum用法
enum 的全称为 enumeraTIon, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中. 下面是我在使用 enum 过程中的一些经验和总结. 原始的接口定义常量 publi ...
- java class教程_深入理解Java Class文件格式(七)
本专栏列前面的一系列博客, 对Class文件中的一部分数据项进行了介绍. 本文将会继续介绍class文件中未讲解的信息. 先回顾一下上面一篇文章. 在上一篇博客中, 我们介绍了: this_class ...
- 深入理解java虚拟机章节_深入理解java虚拟机-第六章
第6章 类文件 6.3 Class类文件的结构 Class文件是一组以8位字节为基础单位的二进制流. Class文件格式采用一种类似C语言结构伪结构存储数据,这种伪结构中只有两种数据类型:无符号数和表 ...
- java画板抽象类_深入理解Java抽象类与接口
基于抽象类与接口有太多相似之处且均体现着oop的抽象性,本文从以下几点谈谈对这两者的理解. 1.抽象类 2.接口 3.各自优缺点以及应用举例. 1.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象 ...
- java事件处理模型_从零开始理解JAVA事件处理机制(3)
我们连续写了两小节的教师-学生的例子,必然觉得无聊死了,这样的例子我们就是玩上100遍,还是不知道该怎么写真实的代码.那从本节开始,我们开始往真实代码上面去靠拢. 事件最容易理解的例子是鼠标事件:我们 ...
- java对象实例_深入理解Java对象实例生成的例子!(转)
深入理解Java对象实例生成的例子!(转)[@more@]代码如下: class A { public int Avar; public A() { System.out.println(" ...
- java 常量折叠_深入理解Java虚拟机之早期编译器优化
Javac编译器 Javac编译器是一个由Java语言编写的程序 Javac的源码与调试 从Sun Javac的代码来看,编译器大致分为3个过程: 解析与填充符号表的过程 插入式注解处理器的注解处理过 ...
- sas java 虚拟机异常_深入理解JAVA虚拟机之异常诊断
常见的JAVA虚拟机HotSpot虚拟机运行时数据库由5部分构成:方法区,堆,虚拟机栈,本地方法栈,程序计数器.下面列举各个部分可能出现的异常及其出现原因. 1.方法区存放的已被虚拟机加载的类型信息, ...
最新文章
- 看看那些双车中接力装置
- 使用Dapper处理多个结果集和多重映射的教程
- 聚焦2016:关于语音识别、图像识别及大数据
- 1041: 谭浩强C语言(第三版)习题5.5
- 微信小程序——聊天小程序(从搭建到结束)
- 利用计算机为祖国做贡献的人,李晓维:祖国,我把科研事业献给您
- 时空、光年、过去与现在
- 消费者大喊商家欺诈!宝贝ID下的商品违规修改也是定时炸弹!
- 0031 练习(猜拳游戏)
- 抖音短视频数据抓取实战系列(〇)——前言
- lept_json的学习之JSON
- Halcon 初体验
- 谷歌浏览器为什么推荐使用搜狗搜索?知乎网友的脑回路真是……
- 基于php的校园视频点播系统
- T-SQL执行内幕(1)——简介
- ptp时钟linux,Linux标准PTP堆栈将时钟IC与网络处理器相连
- [Data Structure]11. 图的实现和遍历
- 财务软件中的借贷关系
- 2013小米校园招聘
- MySQL 复制(四:复制原理)
热门文章
- Temporal Action Proposal Generation with Transformers TAPG transformer论文阅读笔记
- CyanogenMod - All the source code for CyanogenMod
- HDC1080 驱动程序代码(C语言版)
- java普通分隔符,懂得java的文件4种分隔符
- 独立IP、特产浏览量(PV)、访问次数(VV)、独立访客(UV)
- C语言关键字浅析-_Complex
- 下拉列表—DropDownMenu的使用解析
- 【产业互联网周报】云厂商加速布局政企市场:华为云发布七款新产品;腾讯政务战略升级;钉钉发布数字区县解决方案...
- 【C#】 .NET Reflector 安装与学习
- Attention机制原理