访问修饰符相关注意点(protected子类友好)
注意:protected表示只有在子类和同包中可以访问。
需要注意的是,在其他包中,若是创建了父类的对象,但是父类对象访问不了自己类里面用protected修饰的属性,只能由子类访问父类的protected修饰的属性,切记!
而在本类本包中,则可以访问protected修饰的属性!(这个结论不对,下面的是对的!)
参考来源:http://www.cnblogs.com/Victor-Han/p/4861412.html
package 1:
BaseClass:package package_1;
// 相当于NewObject类
public class BaseClass {
// protected方法
protected void protectedMethod() {
System.out.println("This is BaseClass");
} }SubClass:package package_1; public class SubClass extends BaseClass {
}MainClass:package package_1; public class MainClass {
public static void main(String[] args) {
BaseClass b1 = new BaseClass();
SubClass s1 = new SubClass();
b1.protectedMethod(); // 父类的protected方法可在同一个包中的其它类中被访问
s1.protectedMethod(); // 子类中继承了父类的protected方法
}
}
package 2:
SubClass:package package_2; import package_1.BaseClass;
// 继承了不在同一个包中的父类 BaseClass
public class SubClass extends BaseClass {
public void testMesthod(){
BaseClass b1 = new BaseClass();
b1.protectedMethod(); // 编译器报错。父类的protected方法不可以在不同一个包中的子类中被访问
this.protectedMethod(); // 子类继承了父类protected方法
}
}MainClass:package package_2; import package_1.*; public class MainClass {
public static void main(String[] args) {
BaseClass b1 = new BaseClass();
b1.protectedMethod(); // 编译器报错。父类的protected方法不可以在不同一个包中的其它类中被访问
SubClass s1 = new SubClass();
s1.protectedMethod(); // 编译器报错。子类的protected方法不可以在不同一个包中的其它类中被访问
}
}protected修饰的属性或方法,只在子类里面友好,若不在子类里面,而是在其他包的测试类中,创建的子类对象,是访问不了protected修饰的属性或方法;只有在其他包创建了子类,子类里面才能使用protected修饰的属性或方法!
访问修饰符相关注意点(protected子类友好)的更多相关文章
- JAVA 中的权限访问修饰符(public,protected,default,private )
JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什 ...
- Java 访问修饰符详解
访问修饰符定义了类.属性和方法的访问权限,Java 中包含四种,访问权限从小到大为 private.default.protected 和 public. public,公共修饰符,被其修饰的类.属性 ...
- C# JAVA成员访问修饰符比较
在面向对象的访问修饰符中常用的有public ,private ,protected C# 访问修饰符: private < protected internal < internal/p ...
- [No0000E7]C# 封装 与访问修饰符
C# 支持的访问修饰符: Public Private Protected Internal Protected internal Public 访问修饰符 Public 访问修饰符允许一个类将其成员 ...
- java中四种访问修饰符
Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量) public protected d ...
- Java的访问修饰符的作用范围
访问修饰符: private default protected public 作用范围: 访问修饰符\作用范围 所在类 同一包内其他类 其他包内子类 其他包内非子类 private 可以访问 不可以 ...
- Java中的一些关键字:static,final,和abstract,interface,以及访问修饰符说明
1.关键字可以修饰的说明: 关键字 属性(是否可修饰) 方法(是否可修饰) 类(是否可修饰) static 是 是 是 final 是 是 是 abstract 否 是 是 2.关键字的意义: 关键字 ...
- Java面向对象入门(2)-访问修饰符
Java访问修饰符–public, protected, private and default Java提供了四个访问修饰符来设置类,变量,方法和构造函数的访问级别,即public,private, ...
- JAVA知识总结(三):继承和访问修饰符
今天乘着还有一些时间,把上次拖欠的面向对象编程三大特性中遗留的继承和多态给简单说明一下.这一部分还是非常重要的,需要仔细思考. 继承 继承:它是一种类与类之间的关系,通过使用已存在的类作为基础来建立新 ...
随机推荐
- 2星|《工业X.0》:物联网的资料汇编
工业X.0:实现工业领域数字价值 看完比较失望,没有看到新的观点想法.基本算是物联网的资料汇编.总体评价2星. 以下是书中一些内容的摘抄: 1:例如,埃森哲为其员工开发了一个用例,用增强现实技术解决实 ...
- .NET Core & EntityFrameworkCore
前言 .NET Core 相比于 .NET Fromework 有跨平台.轻量化且开源的优势. 在使用 EntityFrameworkCore 的时候也遇到了很多问题,至于网络上的教程嘛...大部分都 ...
- MVC POST请求后执行javascript代码
[HttpPost] public ActionResult PostTest() { //你的业务代码 //...... //要执行的js string js = "window.loca ...
- Apex语言(九)类的方法
1.方法 方法是对象的行为.如下表: 看书,编程,打球就是方法. 2.创建方法 [格式] 访问修饰符 返回值类型 方法名(形式参数列表){ 方法体; } 访问修饰符:可以为类方法指定访问级别. 例如, ...
- Python总结1
时间:24日下午输入:input()输出:print()格式化输出通过某种占位符用于替换字符串中某个位置的字符.占位符:%s:可以替换任意类型%d:可以替换数字类型 需要掌握的#1.strip去左右两 ...
- PY简易爬虫
然而,实用性很差,仅仅是能用而已. 已知bug: 由于土啬的问题,经常会炸掉.网络不稳定导致各种Connection Aborted/SSLError: EOF occurred in violati ...
- VirtualBox安装增强包实现文件共享
环境: win10 64位 Virtualbox 5.1.30 ubuntu-16.04.3-server-amd64.iso 1. 安装好ubuntu后,打开virtualbox安装路径文件夹,找到 ...
- Golang - 处理json
目录 Golang - 处理json 1. 编码json 2. 解码json Golang - 处理json 1. 编码json 使用json.Marshal()函数可以对一组数据进行JSON格式的编 ...
- VMware虚拟机上安装CentOS 7
下载CentOS7,点击网址下载,地址:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso ...
- python 实现kmeans聚类
编程中在做数值相等判断的时候,直接使用==判断并不可靠.实际上经过运算后的两个值(浮点型)并不可能完全一致,可能会因为小数点后的些许差异导致判断为false. 比如: 1 print 1e-5 == ...