Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > Java类的属性
【标  题】:Java类的属性
【关键字】:Java
【来  源】:http://www.cublog.cn/u/17549/showart.php?id=173119

Java类的属性

Your Ad Here
Public、private、protected显示了三种类中的属性和服务的类型,public是可以随意访问的、private是外界不能访问的(显示了数据的封装性)、protected说明数据是受保护的。下面就来详细讲述一下这三个究竟有什么区别。

首先要了解一下包的概念。有若干个类,它们相互之间有一定的关系,那么就可以定义一个包容纳这些类,包不仅仅只能包含类,它可以拥有类、接口、构件、节点、协作,包内还可以包含包。
现在就让我们来具体讨论一下这三个种类的不同之处。

<A TARGET="_top" HREF="http://ad.cn.doubleclick.net/click%3Bh=v7/345a/3/0/%2a/n%3B45103473%3B0-0%3B0%3B13895291%3B4307-300/250%3B18067261/18085156/1%3B%3B%7Efdr%3D45803315%3B0-0%3B0%3B6694709%3B31-1/1%3B18135183/18153078/1%3B%3B%7Esscs%3D%3fhttp://scn.semiconductors.philips.com/"><IMG SRC="http://m.cn.2mdn.net/1280511/nxp300x250-simchin2.gif" BORDER=0></A>

作为public的类和属性是可以被外界任意调用的,无论是在类中,还是跨越类的访问(如果不属于同一个包,就要调用import语句,添加包名),这一点是非常好理解的。

       Private的属性和方法是最自私的,它定义的属性和方法只能在本类中使用,到类外,是无论如何都不能被使用的,如:

class Date

{

private int day;

public void tomorrow()

{

this.day = this.day + 1;

}

}

public class DateUser

{

public static void main(String args[])

{

Date mydate = new Date();

mydate.day = 21; //注意这句话是错的

}

}
在这个程序中,创建了一个Date类的对象mydate,这是可以的,但是由于类Date中的day是私有变量,所以,创建的这个对象mydate 不能通过mydate.day来访问这个属性,如果在其它类中要使用这个私有变量,那么只能通过Date中的public的方法来访问这个属性,这样,就很好的保证了数据的封装性,就像面向对象中提到的报刊亭的故事一样,购买报刊的人不能自己伸手进去拿报纸或是找零钱,而只能由报刊亭内部人员来处理这些事情一样。在上面的例子中,大家可以发现,类Date中的默认方法(Date())并没有定义它的类型,这就意味着它是友好的,也就是意味着它在本包内是 public的,而在外包内是private的。但是一旦把它的类型定义为private,那么连Date mydate = new Date()也会出错,这是因为默认的构建器已经被定义为private类型,也就是即使是本包内的其他类也不能访问了。
<A TARGET="_top" HREF="http://ad.cn.doubleclick.net/click%3Bh=v7/345a/3/0/%2a/n%3B45103473%3B0-0%3B0%3B13895291%3B4307-300/250%3B18067261/18085156/1%3B%3B%7Efdr%3D45803315%3B0-0%3B0%3B6694709%3B31-1/1%3B18135183/18153078/1%3B%3B%7Esscs%3D%3fhttp://scn.semiconductors.philips.com/"><IMG SRC="http://m.cn.2mdn.net/1280511/nxp300x250-simchin2.gif" BORDER=0></A>

       对于protected就要考虑到包的概念,如果有两个类,如:Date和DateUser两个类分别位于不同的包内,而DateUser是继承Date 类的一个类,那么如果要使DateUser中的方法访问Date中的方法或属性,除了使用import将包导入,还需要考虑所要访问的方法和属性是什么类型的,一般而言,跨包访问,public的方法和属性都一定可以访问,但是考虑到如果将需要使用的方法和属性都修改成public的话,那么就可以允许任何事物访问,就不具有安全性,为了这个事情的考虑,添加了protected,如果将需要访问的方法和属性定义为protected,那么其它的类无法访问,而外包的DateUser通过import就可以访问这些属性和方法了,即保证了数据的安全性,也保证了数据被很好的使用。范例如下:

       package a.b;

       public class Sample

       {

              protected void doing();

}

import a.b.*;

public class Sample1 extends Sample

{

       public static void main(String args[])

       {

              Sample1 x=new Sample1();

              x.doing();

}

}
在C语言中调用进行python编程示例[原创]:【上一篇】
Java值传递:【下一篇】
【相关文章】
  • javascript 对文本框的限制
  • Javascript 判断日期 ValidDate 函数
  • FireFox 如何用Javascript 修改状态栏status
  • 比较好的Java 网站
  • 简单层RPC应用的Java实现
  • 关于java数组的深度思考
  • 我的20本Java书
  • java 面试题集
  • 跟我动手学java之 准备您的工具
  • spring javamail 来发送动态生成的3D图象
  • 【随机文章】
  • 删除日文字体,实现中文美化!(英文或中文系统)
  • .mobi是第一个也是唯一手机域名
  • JDBC连接postgres
  • Linux下DM9000网卡驱动实验〈二〉
  • Flash游戏制作--五子连珠(二)
  • 线程基本编程
  • RFC(Request For Comments)
  • IBMeServerpSeries服务器健康检查表1
  • Windows 2000 软件资源共享
  • 《仙境传说RO》圣殿十字军经验和想法
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.