几个java初级问题,请帮忙解答一下,谢谢!
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




