动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.四种Java脚本语言之评测.
.关于java vm的垃圾收集.
.two tips about BlackBerry.
.APPFUSE中使用CLOB类型.
.在JAVA中实现C++代码的复用.
.我学习使用java的一点体会.
.避免这10项J2EE危机来确保JAVA项.
.使用JDOM操作XML系列文章二 从数.
.测试在Solaris系统下NFS使用手册.
.Resin2.1.12的数据库连接池配置.
.Java入门(8) 创建新类.
.J2EE相关设计模式讨论.
.用Java事件处理机制实现录制回放.
.[JAVA100例]076、在Applet中使用.
..NET应用自动部署窗体技术详解(3).
.用Reflection实现Visitor模式.
.java版的MD5.
.Struts 用户指南(一).
.JDBMonitor在多数据源中的问题.
.JAVA实现服务器和多用户跨平台的.

java 中protected modifier 使用总结

发表日期:2008-1-5 |



  1. protected 访问控制符能被用于方法和成员变量。
  
  2. 声明为protected的方法和成员变量能被同一个包里的所有类所访问,就像默认修饰符package一样。
  
  3. 能被该类的子类所访问,子类可以和父类不在一个包中。
  
  这样,当你想让一个类中的某个方法或成员变量在包中都可见,而且其子类也能访问(子类有可能和父类不在同一个包中)但又不想让所有类都可以访问该类时,就可以用protected修饰符。
  
  可访问性:
  public > protected > package >private
  
  注重:
  
  4. But a subclass in another package can Access the protected members in the super-class via only the references of subclass or its subclasses. A subclass in the same package doesn’t have this restriction. This ensures that classes from other packages are accessing only the members that are part of their inheritance hierarchy.
  
  下面的例子可以说明上述几点:(非凡注重第4点)
  
  我们将创建一个父类Bird.Java,放在birdpack包中,父类中有一个protected int的成员变量nFeathers;
  
  再分别创建4个Bird类的子类DUCk1.java,Duck2.java,Duck3.java,Swan.java,放在duckpack包中,通过在每个子类中调用nFeathers的不同方法说明上述几点
  
  下面的程序并不用于运行,因为访问控制在编译期间就要确定,我们只需编译下述文件,看是否能通过。在编译下述文件前,先想想能不能编译通过?
  
  //Bird.java------------------------------
  
  package birdpack;
  
  public class Bird{
  
  protected int nFeathers;
  
  }
  
  //Duck1.java-----------------------------
  
  package duckpack;
  
  import birdpack.Bird;
  
  public class Duck1 extends Bird{
  
  public void setn(int duck1n){
  
  //在子类中直接访问父类中的protected变量
  
  nFeathers=duck1n;
  
  }
  
  }
  
  //Duck2.java------------------------------
  
  package duckpack;
  
  import birdpack.Bird;
  
  public class Duck2 extends Bird{
  
  public void construct(int newduck2){
  
  Duck2 d2 = new Duck2();
  
  //在子类中通过子类的对象访问父类中的protected变量
  
  d2.nFeathers=newduck2;
  
  }
  
  }
  
  //Duck3.java------------------------------
  
  package duckpack;
  
  import birdpack.Bird;
  
  public class Duck3 extends Bird{
  
  public void construct(int newduck3){
  
  Bird b = new Bird();
  
  //子类中用父类对象反而不能访问父类中的protected变量
  
  b.nFeathers=newduck3;
  
  }
  
  }
  
  //Swan.java--------------------------------
  
  package duckpack;
  
  import birdpack.Bird;
  
  public class Swan extends Bird{
  
  public void construct(int swan){
  
  Duck1 d1 = new Duck1();
  
  //子类中用另外一个子类的对象也不能访问父类中的protected变量
  
  d1.nFeathers=swan;
  
  }
  
  }
  
  编译上述几个文件,后2个不能通过。编译器提示:
  
  " nFeathers has protected access in birdpack.Bird"。
  
  //Bird.java------------------------------
  
  package birdpack;
  
  public class Bird{
  
  protected int nFeathers;
  
  }
  
  //Duck1.java-----------------------------
  
  package duckpack;
  
  import birdpack.Bird;
  
  public class Duck1 extends Bird{
  
  public void setn(int duck1n){
  
  //在子类中直接访问父类中的protected变量
  
  nFeathers=duck1n;
  
  }
  
  }
  
  //Duck2.java------------------------------
  
  package duckpack;
  
  import birdpack.Bird;
  
  public class Duck2 extends Bird{
  
  public void construct(int newduck2){
  
  Duck2 d2 = new Duck2();
  
  //在子类中通过子类的对象访问父类中的protected变量
  
  d2.nFeathers=newduck2;
  
  }
  
  }
  
  //Duck3.java------------------------------
  
  package duckpack;
  
  import birdpack.Bird;
  
  public class Duck3 extends Bird{
  
  public void construct(int newduck3){
  
  Bird b = new Bird();
  
  //子类中用父类对象反而不能访问父类中的protected变量
  
  b.nFeathers=newduck3;
  
  }
  
  }
  
  //Swan.java--------------------------------
  
  package duckpack;
  
  import birdpack.Bird;
  
  public class Swan extends Bird{
  
  public void construct(int swan){
  
  Duck1 d1 = new Duck1();
  
  //子类中用另外一个子类的对象也不能访问父类中的protected变量
  
  d1.nFeathers=swan;
  
  }
  
  }
  
  编译上述几个文件,后2个不能通过。编译器提示:
  
  " nFeathers has protected access in birdpack.Bird"。
  
  第4点说明,就算在子类中,也只能通过子类(或子类的子类)的引用来访问父类中的protected方法和成员变量。
  
  在Duck3和Swan两个子类中,直接通过父类和另一个子类来访问父类中的protected方法和成员变量就不行。
  
  附:编译技巧
  
  当编译含有包声明的源文件时,使用 -d 选项会带来很多方便,它能保证编译后的class文件存放在正确的目录路径下。
  
  我们可以把上述5个文件都放在protectedtest目录下,然后用 -d 选项去编译:
  
  javac -d . Bird.java
  
  javac -d . Duck1.java
  .....
  
  其中.表示以当前目录创建包结构的目录层次。编译成功后,会在protectedtest下生成2个目录:birdpack和duckpack,里面是生成的class文件。
上一篇:用Apache Velocity模板引擎速造网站 人气:661
下一篇:Java加油站:讲解文件的建立与删除 人气:870
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-6 Movie34电影搜索引擎 v3.0
2008-9-6 wap2.0仿帝国建站喜用 v2.0
2008-9-6 免费人才招聘网 宽屏版 v3.01
2008-9-6 喜喔喔视频采集程序 v1.0 beta
2008-9-6 ASP客户管理系统
2008-9-6 主流驿站中秋祝福程序
2008-9-6 php实现msn协议的类
2008-9-5 Coppermine Photo Gallery v1.4.
2008-9-5 清松网络日记本 v2.4
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号