- 浏览: 111026 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yongliang567:
楼主,你对双重检查加锁这种单例实现方法的分析是对的,但是你既然 ...
关于单例(Singleton)模式实现方式的反思 -
xbl001529:
支持IE8吗?
[效果]JS折叠菜单
先说几个protected的使用原则,后面再看对应的例子。
- protected 的属性和方法可以在本包和子类访问
- 非同包的子类里面,不能直接使用父类,或者其它包的子类访问
我们看代码,这个是基类
- package test.base;
- /**
- * 基类,属性和方法都是protected的。
- *
- * @author 赵学庆,Java世纪网(java2000.net)
- *
- */
- public class Base {
- protected int testInt;
- public int publicInt;
- protected int getTestInt() {
- return testInt;
- }
- }
下面是2个同一个包的测试代码,一个是普通类,1个是子类。
- package test.base;
- /**
- * 测试相同包的子类。
- *
- * @author 赵学庆,Java世纪网(java2000.net)
- *
- */
- public class TestSamePackageSubClass extends Base {
- public void test() {
- Base b = new Base(); // 使用基类
- b.publicInt = 0 ; // 可以访问
- b.testInt = 1 ; // 访问protected的属性成功
- b.getTestInt(); // 访问protected的方法成功
- }
- public void test2() {
- publicInt = 0 ; // 可以访问
- testInt = 2 ; // 子类中可以直接用父类的属性
- getTestInt(); // 子类中可以直接用父类的方法
- }
- }
- package test.base;
- /**
- * 测试相同包的普通类。
- *
- * @author 赵学庆,Java世纪网(java2000.net)
- *
- */
- public class TestSamePackageNormal {
- public void test() {
- Base b = new Base(); // 使用基类
- b.publicInt = 0 ; // 可以访问
- b.testInt = 1 ; // 访问protected的属性成功
- b.getTestInt(); // 访问protected的方法成功
- }
- }
下面是不同包的普通类和子类测试,一个普通类,2个子类
- package test.sub1;
- import test.base.Base;
- /**
- * 不同包的正常类。
- *
- * @author 赵学庆,Java世纪网(java2000.net)
- *
- */
- class TestOtherPackageNormal {
- public void test() {
- Base b = new Base(); // 使用基类
- b.publicInt = 0 ; // 可以访问
- b.testInt = 1 ; // 访问protected的属性-失败
- b.getTestInt(); // 访问protected的方法-失败
- }
- public void test3() {
- TestOtherPackageSubClass b = new TestOtherPackageSubClass();
- b.publicInt = 0 ; // 可以访问
- b.testInt = 3 ; // 直接访问属性-失败
- b.getTestInt(); // 直接访问方法-失败
- }
- }
- package test.sub1;
- import test.base.Base;
- import test.sub2.TestOtherPackage2SubClass;
- /**
- * 不同包的子类1.
- *
- * @author 赵学庆,Java世纪网(java2000.net)
- *
- */
- class TestOtherPackageSubClass extends Base {
- public void test() {
- Base b = new Base(); // 使用基类
- b.publicInt = 0 ; // 可以访问
- b.testInt = 1 ; // 访问protected的属性失败
- b.getTestInt(); // 访问protected的方法失败
- }
- public void test2() {
- publicInt = 0 ; // 可以访问
- testInt = 2 ; // 直接用父类的属性-成功
- getTestInt(); // 直接用父类的方法-成功
- }
- public void test3() {
- // 用另外一个package的子类。
- TestOtherPackageSubClass2 b = new TestOtherPackageSubClass2();
- b.publicInt = 0 ; // 可以访问
- b.testInt = 1 ; // 访问protected的属性-失败
- b.getTestInt(); // 访问protected的方法-失败
- }
- public void test4() {
- // 用另外一个package的子类。
- TestOtherPackage2SubClass b = new TestOtherPackage2SubClass();
- b.publicInt = 0 ; // 可以访问
- b.testInt = 1 ; // 访问protected的属性-失败
- b.getTestInt(); // 访问protected的方法-失败
- }
- }
- package test.sub1;
- import test.base.Base;
- /**
- * 不同包的子类2.
- *
- * @author 赵学庆,Java世纪网(java2000.net)
- *
- */
- class TestOtherPackageSubClass2 extends Base {
- }
另一个不同包的子类
- package test.sub2;
- import test.base.Base;
- /**
- * 另一个不同包的子类。
- *
- * @author 赵学庆,Java世纪网(java2000.net)
- *
- */
- public class TestOtherPackage2SubClass extends Base {
- }
总结一下:
- 公共属性总能访问,呵呵,这个不用说了
- 同一包的子类,可以任意使用
- 同一个包的正常类,可以直接用他的实例进行访问
- 不同包的正常类,无法访问任何属性和方法
- 不同包的子类,不能使用父类实例的属性和方法
- 不同包的子类,不能使用其它包的子类实例的属性和方法
- 不同包的子类,可以直接使用父类的属性和方法
总之,不同包的子类就规规矩矩的在自己的代码里用父类的属性就行了。其它的使用都是不允许的。
发表评论
-
通过spring取得国际化文件
2012-03-23 16:18 1856/* * @(#) ScheduleController ... -
java 能否做成C/S架构的,同时他能否写程序调用IE框架
2008-10-20 14:21 1008据说现在java在C/S方面 有了很大进步,想着想写个程序。通 ... -
转载 java面向对象—抽象类、接口与多继承
2008-10-20 09:49 1233有时候,我们可能想要构造一个很抽象的父类对象,它可能仅仅代表一 ... -
JAVA命名和目录服务(JNDI)
2008-10-17 10:59 924在 J2EE 中, JNDI 的目的是用来查找 J2EE 服 ... -
java高级编程:基于JNDI的应用开发
2008-10-17 10:58 1085基于JNDI的应用开发 ... -
java中中文问题
2008-10-09 13:36 8521、如果一个数据库的编码是iso8859-1的,我在java代 ... -
关于单例(Singleton)模式实现方式的反思
2008-10-06 15:57 1126大家都知道单例模式,也知道实现的方法,最近看到几个网友推荐的文 ... -
如何使用Static的变量和方法
2008-09-26 14:25 846有时你希望定义一个类 ... -
dom4j读取xml(笔记)
2008-09-26 10:20 11143Java代码 SAXReader reader ... -
关于struts的几个注意的地方 第一章
2008-09-26 10:14 729J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手 ... -
关于struts的几个注意的地方
2008-09-26 09:59 721关于struts的几个注意的 ... -
Java Vector
2008-09-09 15:32 2835Vector 类可以实现可增长的对象数组。与数组一样,它包含 ... -
Linux 文件命令精通指南
2008-07-15 10:01 941为刚接触 Linux 文件命令的初学者提供的速成教程 ... -
Java 设计模式与建模专题
2008-07-09 15:32 965http://www.ibm.com/developerwor ... -
Java并发编程基础知识片段(一)
2008-06-27 16:45 949原创 Java并发编程基础知识片段(一)收藏 Java 5并发 ... -
关于junit实现过程详细介绍
2008-04-14 16:16 942测试分类:白箱测试、黑箱测试、单元测试、集成测试、功能测试…… ... -
循序渐进学习Junit
2008-04-14 16:15 1188用JUnit可以大量减少Java ... -
JUnit入门
2008-04-14 16:14 795JUnit是一个开源的java单元测试框架。在1997年,由 ... -
Java正则表达式入门
2008-03-18 17:38 868Java中正则表达式使用方法详解: http://tech.1 ... -
Java正则表达式入门
2008-03-18 13:56 845众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字 ...
相关推荐
《Java测试题4》 <br>Java练习题 一、填空 1、 对象的状态和行为是对象的主要属性;前者对应类的 ,行为又称为对象的操作,对应着类的 。类的定义包括 声明和 声明。 2、 要嵌入在HTML文件中运行的程序...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 ...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 ...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 ...
10.3.7 使用super调用父类中的方法和属性 278 10.4 多态(Polymorphism)以及其他 279 10.4.1 多态——运行方知结果 280 10.4.2 重载也不简单 280 10.4.3 使用多态构建车队 283 10.5 在多态的环境中拨开迷雾 ...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 ...
10.3.7 使用super调用父类中的方法和属性 278 10.4 多态(Polymorphism)以及其他 279 10.4.1 多态——运行方知结果 280 10.4.2 重载也不简单 280 10.4.3 使用多态构建车队 283 10.5 在多态的环境中拨开迷雾 ...
35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 ...
第4章 面向对象(封装) 4课时 理解类封装属性(数据成员)和行为(方法成员),区别类和对象。 能够定义类,创建类的对象(实例化类)和通过对象引用访问数据成员和方法成员;形成定义类和使用类...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷: 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 ...
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 ...
Overload [java] 方法的重载(不同参数列表的同名方法) [,әuvә'lәud] Override [java] 方法的覆盖(覆盖父类的方法) [,әuvә'raid] polymiorphism[java] 多态 (polymorphism 多形性[,pɒli'mɒ:fizm]) ...
b)@HTTP:标注在需要被请求的方法上,value属性值为请求时的方法名,supportMethod属性值为请求类型,默认支持get和post两种,兼容RquestMapping c)@ReportParam:标注在需要注入方法的参数上,继承至ReportRequest的...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 ...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 ...
// //根据method属性的值调用相应的方法 // if("login".equals(methodName)){ // this.login(request,response); // }else if("register".equals(methodName)){ // this.register(request,response); // }else if(...