请先看一下下面这个类,包含了两个构造函数。
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;
}
}
第一个构造函数接收两个double类型的参数,第二个接收一个Point类型的参数,现在有一个问题,就是第二个构造函数里面Point(final Point oldPoint),这一行中有一个final,为何要加上这个final,不加可以么?如果不可以,如果去掉会出现什么情况?
谢谢大家!!
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;
}
}
第一个构造函数接收两个double类型的参数,第二个接收一个Point类型的参数,现在有一个问题,就是第二个构造函数里面Point(final Point oldPoint),这一行中有一个final,为何要加上这个final,不加可以么?如果不可以,如果去掉会出现什么情况?
谢谢大家!!
解决方案 »
- map问题
- 谁有用java awt 做的图片旋转功能哦
- 关于接口
- 部署EJB是出现的错误 (50分 求救)
- 是不是运行每个servlet都要配置web.xml 文件,有简单的办法吗,恳请达人指教
- 在线等! 急!-能编译能运行!就是JtableI不显示!(求教高手!)不胜感激!!高手指一下哪错了??
- 谁能给我讲javabean,ejb,jsp,servlet,struts,jabc基本概念(最好用自己的话来描述)及大家在实际项目中用法?
- 新手高分求助:怎么在frame里加时间条?
- 怎样解决数值转化中的丢失回题?
- 浅谈java线程定时任务timerTask
- 关于inner类的问题
- 一个关于j2se中canvas的问题,在线等,急!
oldPoint = xxxx;修改oldPoint的引用
加上final表示你在构告器里定义的是一个不可变的Point的引用变量
class Point{
double x;
double y; Point(double xVal,double yVal){
x=xVal;
y=yVal;
}
//**final加不加有什么区别
//*在构告器里声明了一个不可变的Point类引用变量,
//*这个引用变量做用域只在这个构造器内,相当以这个构造器的局部为量,是不是可改变的
Point(final Point oldPoint){
x=oldPoint.x;
y=oldPoint.y;
oldPoint=this;//因为oldPoint引用是不可变的,所以这里做不了赋值,要运行得注释这一行
}
public static void main(String[] args)
{
Point p=new Point(2d,67d);
Point p2=new Point(p);
Point p3=new Point(p2);
//p=p3;
System.out.println(p.x+"\t\t"+p.y);
System.out.println(p2.x+"\t\t"+p2.y);
System.out.println(p3.x+"\t\t"+p3.y);
}
}
double x;
double y;
Point(){;}
Point(double xVal,double yVal){
x=xVal;
y=yVal;
} Point(Point oldPoint){
x=oldPoint.x;
y=oldPoint.y;
oldPoint.x=46;
System.out.println(oldPoint.x);
}
}
class EClass extends Point{
EClass(){
super();
}
}
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
46.0
32.0