CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

几个java初级问题,请帮忙解答一下,谢谢!

楼主sep1875(Tony)2003-12-03 10:55:02 在 Java / J2SE / 基础类 提问

1。在一片文章中看到如此文字“友类”,而且在编写的代码中只有如下:  
  class   Point   {  
  .....  
  }  
  说此为友类,而且后面接着写了主类,请问友类是什么意思,在名明和书写上有什么规定吗?它和一般的类有什么区别?  
  2。看到在友类中有如下定义:  
  protected   int   x,y;  
  请问这样写有什么特殊意义吗?  
  3。在该友类中有如下方法:  
  public   String   toString()   {  
  return   "("   +   x   +   ","   +   y   +   ")";  
  }  
  public   void   move(int   dx,int   dy)   {  
  x   +=dx;y   +=dy;  
  }  
  在主类的方法调用中运用了“move”方法,但是看到如下说明文字“对象p(在主类中定义了Point   p   =   new   Point())将自动调用所属类Point的toString()方法,返回一个字符串”,这点能否给说明一下?谢谢! 问题点数:30、回复次数:12Top

1 楼kypfos(不在寻梦)回复于 2003-12-03 11:00:33 得分 5

友类,肯定是某人杜撰的名词。  
  上面的toString()不过是一个override的方法,比如在print(p)时才会自动被调用  
  Point   p=new   Point()是不会去调用这个方法的。Top

2 楼Shrewdcat(丧邦&灵猫&潇)回复于 2003-12-03 11:10:29 得分 0

同意楼上的说法,友类是字误或者是友好类型类的简称把。      
   
  在java中每个对象都有一个ToString函数,在需要对象为string   类型时,会自动调用该函数。Top

3 楼sep1875(Tony)回复于 2003-12-03 11:11:56 得分 0

不知道我理解的对不对,只要在某个类存在如下方法:  
  public   String   toString()   {  
  return   "("   +   x   +   ","   +   y   +   ")";  
  }  
  使用print(p)都会自动调用该方法,对吗?  
  能否将第二个问题说明一下,谢谢!Top

4 楼Shrewdcat(丧邦&灵猫&潇)回复于 2003-12-03 11:12:05 得分 0

protected   int   x,y;  
  是定义x,y的访问权限为保护类型,既在同一个Package   或者该类继承类中才能访问x,y.Top

5 楼toptry(Quison Sun)回复于 2003-12-03 11:14:09 得分 5

1、在同一个包内类的叫友元类;  
  2、protected   int   x,y;   ==   int   x,y;   为保护成员  
  3、对于toString()这有在某个对象的需要转换为String时,会默认调用此方法!  
  Top

6 楼sep1875(Tony)回复于 2003-12-03 11:15:47 得分 0

那在定义时不使用“protected”会有什么问题吗?Top

7 楼Shrewdcat(丧邦&灵猫&潇)回复于 2003-12-03 11:23:12 得分 0

to   sep1875(apple)   ,你说的很对,就这个意思。Top

8 楼bannercloud(雪山旗云)回复于 2003-12-03 11:24:06 得分 5

要看具备情况,不能一概而论!有的时候protected有用!有的时候可有可无!  
  如果你是初学者你最好把书上的例子多试几次!去掉一部分看看是否可以,如果不可以在书上找答案!不要太依靠书了!做破坏性实验!Top

9 楼Shrewdcat(丧邦&灵猫&潇)回复于 2003-12-03 11:25:05 得分 10

缺省是friendly访问权限。只能在package   范围内访问它。   你可以看看help里的   protected   keyword.里面都有的。Top

10 楼lyjlee()回复于 2003-12-03 11:27:19 得分 0

使用private定义数据成员实现对该成员的营藏,对应的会有一种称为mutator的函数实现该成员的读取  
  如  
  setX()  
  getX()  
  Top

11 楼ChDw(米)回复于 2003-12-03 11:27:47 得分 5

如果加上修饰protected,那么这个类的子类、同一个包里面的类都可以访问到  
  如果不加上修饰,只有同一个包里面的类可以访问,它的子类(假设不在同一个包里面)就不能访问了Top

12 楼kypfos(不在寻梦)回复于 2003-12-03 11:32:20 得分 0

那么在属性没有任何修饰符的时候,默认为package-protected,那么这种时候是不是也叫做友元呢?  
   
  没听说在java中有友元的概念,  
   
  下面是摘自某处的内容  
   
  Java在类封装的句法上是不同的,其中最大的不同是每个类的成员的默认类型都是友元,这样在同一个包中,该元素对于其它类都是可见的。同样的,protected不但在子类是可见,而且对于同一个包中的其它类也是可见的。因此,Java的private   protected才和C++的protected具有相同的含义  
   
  ---------------------------------------------  
  只是说java与C++的意义上的类似,但是我从来没有在哪里看到有关java的友元的概念。Top

相关问题

  • java初级问题
  • java初级问题
  • java初级问题???
  • JAVA初级问题?
  • 关于多现程的初级问题,解答有分。
  • 2个初级问题,恳请C#先行者解答
  • 初级选手的问题,在线等待解答
  • 一个java初级问题
  • java初级调试问题?
  • Java Swing初级问题

关键词

  • c++
  • 函数
  • 类
  • 调用
  • 子类
  • 同一个包
  • 谢谢
  • 方法
  • 访问
  • protected

得分解答快速导航

  • 帖主:sep1875
  • kypfos
  • toptry
  • bannercloud
  • Shrewdcat
  • ChDw

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo