首页 - 网校 - 万题库 - 直播 - 雄鹰网校 - 团购 - 书城 - 模考 - 学习通 - 导航 -
首页网校万题库直播雄鹰网校团购书城模考论坛实用文档作文大全宝宝起名
2015中考
法律硕士
2015高考
MBA考试
2015考研
MPA考试
在职研
中科院
考研培训
专升本
自学考试 成人高考
四 六 级
GRE考试
攻硕英语
零起点日语
职称英语
口译笔译
申硕英语
零起点韩语
商务英语
日语等级
GMAT考试
公共英语
职称日语
新概念英语
专四专八
博思考试
零起点英语
托福考试
托业考试
零起点法语
雅思考试
成人英语三级
零起点德语
等级考试
华为认证
水平考试
Java认证
职称计算机 微软认证 思科认证 Oracle认证 Linux认证
公 务 员
导游考试
物 流 师
出版资格
单 证 员
报 关 员
外 销 员
价格鉴证
网络编辑
驾 驶 员
报检员
法律顾问
管理咨询
企业培训
社会工作者
银行从业
教师资格
营养师
保险从业
普 通 话
证券从业
跟 单 员
秘书资格
电子商务
期货考试
国际商务
心理咨询
营 销 师
司法考试
国际货运代理人
人力资源管理师
广告师职业水平
卫生资格 执业医师 执业药师 执业护士
会计从业资格
基金从业资格
统计从业资格
经济师
精算师
统计师
会计职称
法律顾问
ACCA考试
初级会计职称
资产评估师
高级经济师
注册会计师
高级会计师
美国注册会计师
审计师考试
国际内审师
注册税务师
理财规划师
一级建造师
安全工程师
设备监理师
公路监理师
公路造价师
二级建造师
招标师考试
物业管理师
电气工程师
建筑师考试
造价工程师
注册测绘师
质量工程师
岩土工程师
注册给排水
造价员考试
注册计量师
环保工程师
化工工程师
暖通工程师
咨询工程师
结构工程师
城市规划师
材料员考试
消防工程师
监理工程师
房地产估价
土地估价师
安全评价师
房地产经纪人
投资项目管理师
环境影响评价师
土地登记代理人
宝宝起名
缤纷校园
实用文档
入党申请
英语学习
思想汇报
作文大全
工作总结
求职招聘 论文下载 直播课堂
您现在的位置: 考试吧 > 计算机等级考试 > 计算机二级考试 > JAVA > 复习资料 > 正文

2015计算机等级考试二级Java入门教程第五章(10)

来源:考试吧 2015-01-19 9:33:51 考试吧:中国教育培训第一门户 模拟考场
考试吧整理了“2015计算机等级考试二级Java入门教程”,望给备考2015年计算机等级考试的考生带来帮助!

  点击查看:2015计算机等级考试二级Java入门教程章节汇总

  点击查看:2015计算机等级考试二级Java入门教程第五章汇总

  5.10 控制对类成员的访问

  我们还没有讨论类成员如何才能在类外进行访问。你知道在一个静态的类方法内可以引用任何静态的类成员,一个非静态的方法可以引用类的任何成员。在一个类中,可以被其他类访问的变量和方法的限制要显得复杂些。它取决于你为类成员指定的访问属性(accessattributes)以及类是否在同一个包中。这也就是我们必须首先了解包的原因。

  使用访问属性

  让我们先从同一个包中的类开始考虑。在一个给定的包中,任何类都可以直接地访问其他的类名,例如,为了声明变量或者指定方法参数的类型你可以使用类名,但是,这些变量和方法如果是其他类的成员,就不一定可以访问。这些成员的可访问性由访问属性控制。在为一个类成员指定访问属性时,包括迄今为止我们在例子中已经使用过的,你可以有四种选择。要么什么都不指定;要么指定一种,每种访问属性都有完全不同的效果。你可用来为类中变量或方法指定可访问性的选项有:

  

  这张列表显示了你为类成员设置的访问属性是如何决定你可以从Java环境中的哪个部分访问它们。在下一章中我们将讨论子类,所以现在不用考虑它。后面我们将返回来介绍怎样以及何时使用protected属性。注意,public. private和protected都是关键字。把一个成员指定为pubic,则它就完全可访问。而另外一个极端,一个private成员将仅局限于同类中的成员可以进行访问。

  听起来比实际情况更复杂。请看下一张示意图,它显示了同一个包中类之间允许的访问情况。

  

  在一个包内,比如packagel,只是类classl的private成员,不能由同一个包中另一个类的方法直接地访问。把类的成员声明为priVaLe,就限制了它只可在同一个类的方法中使用。

  Java2入门经典在线教程完整版

  我们以前看到过,一个类定义必须有一个public的访问属性才能从包外访问它下一张示意图显示了位于不同包中的类,请求访问一个公有类成员的情况。

  

  这里的访问受到了更多的限制。只有Class 1中被说明为public的那些成员才能被另一个包中的普通类Class2访问。要记住,类Class 1还必须被定义为public属性。在另一个包中的Classl子类,若Class 1的成员没有访问属性,则不能被得到,并且对于private成员,在任何环境下都不能从外部访问。

  指定访问属性

  从我们刚刚看到的示意图中大概推测一下,要为一个类成员指定访问属性,你只在声明的开始处增加一个关键字即可。这里是你在以前看到的Point类,然而,现在我们为它的每个成员定义了访问属性:

  试试看--访问Point类

  在你的Point类中做如下改变。如果你要把它保存在一个新的目录中,就要确保Line.Java也被复制到那里。假如它们在名为Geornetx的目录中,则会对以后很有用。

  pubic class Point

  (

  //Create a point from Coordonates

  public Point (double xVal,double yVal)

  {

  x=xVal;

  y=yVal;

  //Create a Point at exisLing Foint object

  public Point(final aPoint)

  {

  x=aPoint.x;

  y=aPoint.y;

  //Move a point

  public void move (double xDelta,double yDolta)

  {

  //

  Parameter values are increments to the current coordinates

  x +=xDelta;

  y +=yDelta;

  }

  //Calculate the diatance to another point

  public double distance(final pointaPoint)

  {

  return Math.sqrt(

  (x-aPoint.x)*(x-aPoint.x)*(y-aPoint.y)*(y-aPoint.y));

  }

  //convert a point to a string

  public string tostring

  {

  return Double.tostring(x)+ +y; //As x.y

  }

  //Coordinates of the point

  private double x;

  private double y;

  在类中的成员已经被重新排列,private成员位于最后。你应该按照它们的访问属性把类成员排列成一个统一的顺序,这样会使代码更加容易跟踪。最常见的顺序是访问频率高的成员在前面,访问频率低的成员在后面,但是统一的排列顺序要比你选择的特定顺序更重要。

  如何操作

  现在,实例变量x和Y不能从类以外的地方访问或修改,因为它们的访问属性private.对它们进行设置或者修改的惟一途径是通过类中的方法,可以是构造函数,也可以是move方法。如果需要从类以外的地方获得x和y的值,那么就可以用一个很简单的函数来完成这项复杂的操作。例如:

  //Retrieve the x coordinate

  public double getX( )

  (return X:)

  //Retrieve the y coordinate

  public double gety()

  (return y)

  //Set the x coordinate

  public void setx(double inputX)

  ( x=inputx;)

  //Set the y cordinate

  public void secy(double inputy)

  (y=inputy;)

  //Coordinates of the point

  private double x;

  private double y;

  }

  注意,我们己经在类中增加了getX{}, getY{),setX{}和setY{)方法,可以使用它们访问private的数据成员。

  Line类也需要被修改成公有方法以及公有类。我们还需要更改它的intersects()方法,让它可以利用Point类中的setXXX()和getXXX()方法访问Point型对象的私有数据成员。在Line.Java代码中,更改的地方被突出显示,其代码为:

  package Geometry;

  public class Line

  {

  //Create a line form two point

  public line(final Point start,final Point end)

  (

  this.start=new Point(start);

  this.end=new Point(end);

  }

  //Create a line from two coordinate paris

  public line(double xStart,double ystart,double xEnd,double,double yEnd)

  {

  start=new Point (xStart,yStart); //Create the start point

  end =new Point(xEnd,yEnd); //Create the end point

  )

  //Caloulate the length of a line

  piblic double length()

  (

  return start.distance(end); //Use the method form the Point class

  }

  试试看--测试Geometry包

  我们可以建立一连串的点,并且依次连接每对相邻的点以形成一条直线,然后计算直线的总长度。

  import Geometry.*; //Import the Piont the and Line classes

  public class TryPackage

  {

  double[ ] [ ]coords=((1.0,0.0),(6.0,0.0),(6.0,10.0),

  (10.0,10.0),(10.0,-14.0),(8.0.-14.0)

  //create an array of points and fill it with Point objects

  Point[ ]points=new Point [coords.length];

  for(int i=0;i

  points[i]=new Point(coords[i][0].coords[i][l];

  //Create an array of lines and fill it using Point pairs

  Line[ ] lines=new Line(poins.length-1);

  double totalLength=0.0; //store otal line lengh here

  for(int i=0;i

  {

  lines[i]=new Line9points[i],porints[i+1]); //Create a Line

  totalLength + lines[i].length(); //Add its length

  System.out.println(\nDine + (i+1)+ lines[i]

  Length is + lines[i].length());

  )

  //output the toatal length

  system.out.println(/n/nTotal line length=+ totalLength);

  }

  }

  你应该在TryPackage目录中将它保存为TryPackage.java文件。在运行Windows的PC机中,如果你的Geometry路径为C:1Package\Geometry,则可以用下面的命令编译这个文件:

  java -classpath C:\Packages TryPackages.java

  这条命令假定当前目录包含TryPackage.java文件。然后,你可以用下面的命令执行这个程序:

  java -classpath C:\Packages TryPackages

  当程序执行时,你会看到下述输出结果:

  Line 1 (1.0,0.0) ; (6.0,0.0) length is 5.0

  Line 2 (6.0,0.0) : (6.0,10.0) length is 10.0

  //Move members of Outside calss…

  }

  这里的类Inside嵌套在类Outside中。类Inside声明为Outside类的一个公有成员,所以它可从Outside的外面访问。显而易见,一个嵌套类应该与包含它的类有一些特殊的联系。任意地将一个类嵌入到另一个类中是不明智的。这里的类被称作顶层类(top-level class).顶层类是一个包含嵌套类而它自己并没有被嵌套到其他类中的类。

  相关推荐:

  2015计算机等级考试二级Java入门教程章节汇总

  2014计算机二级Java程序设计真题及答案(网友版)

  考试吧特别策划:2015年计算机等级考试报考指南

文章搜索
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。
Copyright © 2004- 考试吧计算机等级考试网 All Rights Reserved 
中国科学院研究生院权威支持(北京)
在线模拟试题
考证通关杀器
考试最新资讯
一次通关技巧