Java中关于构造函数请教~~

2024-12-22 09:24:16
推荐回答(5个)
回答1:

final可以用在数据、方法和类前。
先说final用在数据前时,fianl如果用在基本数据前,则说明这个数据不能再被改变,如果用在一个对象(包括数组)的reference上,则说明这个reference不能再指向另一个reference(但是对象本身是可以被改变的)。
再说final用在类前时,表明该类不能被继承,仅此而已,该类的数据成员能够改变要看他们前面是否有final。

对不起,我错了,这里是不可以改变oldPoint的引用,其成员变量是可以修改的。。 ^^

回答2:

不加也可以吧,不是太清楚
等待高手回答ing

回答3:

那么按照MBox说的,oldPoint.y的值也不可以变!

回答4:

class Point{
double x;
double y;
Point(double xVal,double yVal){
x=xVal;
y=yVal;
}

Point(final Point oldPoint){
x=oldPoint.x;
y=oldPoint.y;
oldPoint.x=46;
}
}
public class FinalClass{
public static void main(String args[]){
Point fn = new Point(32,21);
Point fn2 = new Point(fn);
System.out.println(fn.x);
System.out.println(fn2.x);
}

}
执行结果:
46.0
32.0
oldPoint.x的值不是改变了么?

回答5:

因为java是传值,对象的超作依靠的是对象的引用,通过final修饰之后oldpoint的值就不能在变了,但oldpoint引用所指向的对象是可以变的