![](/img/trans.png)
[英]Can we use public static variable ,to use vaiable of one class in other class in java
[英]Can we use method of other class in constructor of other class?
我只是一個Java初學者。 在做一些練習練習的時候,我遇到了一個困惑:我們可以在另一個類的構造函數中使用一個類的方法,只是類引用嗎? 如果不是,為什么會這樣? 下面我試着解釋一下:
public class MyCircle {
private int radius;
private Point centre;
public MyCircle(int x,int y,int r){
**centre.setX(x);**
**centre.setY(y);**
radius=r;
}
public MyCircle(Point p,int r){
centre=p;
radius=r;
}
public int getRaduis(){
return radius;
}
public void setRadius(int r){
radius=r;
}
public Point getCentre(){
return centre;
}
public void setCentre(Point p){
centre= p;
}
public int getCenterX(){
return centre.getX();
}
public int getCenterY(){
return centre.getY();
}
public void setCentreXY(int x,int y){
centre.setXY(x,y);
}
public double getArea(){
return Math.PI*radius*radius;
}
}
在第一個構造函數中centre.setX()
和center.setY()
在編譯時顯示錯誤,就好像我把center = new Point(x,y)
程序很容易編譯。
此外方法center.setX()
和center.setY()
在setcenterXY()
不會產生任何問題。
下面是點類:
public class Point {
private int x;
private int y;
public Point(){
x=8;
y=9;
}
public Point(int x,int y){
this.x=x;
this.y=y;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
public void setX(int x){
this.x=x;
}
public void setY(int y){
this.y=y;
}
public void setXY(int x,int y){
this.x=x;
this.y=y;
}
public double distanceXY(int x,int y){
int diffX=this.x-x;
int diffY=this.y-y;
return Math.sqrt(diffX*diffX+diffY*diffY);
}
public double distanceXY(Point p){
int diffX=this.x-p.x;
int diffY=this.y-p.y;
return Math.sqrt(diffX*diffX+diffY*diffY);
}
}
正如對您帖子的評論所述,調用centre.setX(x)
和centre.setY(y)
將不起作用,因為您尚未初始化centre
,因此沒有對象可以調用setX(x)
和setY(y)
方法。
不過這是一個簡單的修復,只需使用傳遞給構造函數的值初始化centre
,如下所示:
public MyCircle(int x, int y, int r){
this.centre = new Point(x, y);
this.radius = r;
}
做你想做的事情的方法是使用MyCircle
構造函數中的Point
構造函數:
public class MyCircle {
private int radius;
private Point centre;
public MyCircle(int x, int y, int r){
center = new Point(x,y);
radius = r;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.