啊啊,救命啊,不明白睡不着觉
class Dian{private int x,y;
private String pen_color;
private int pen_size;
public Dian(){
x=0;
y=0;
pen_color=new String("");
pen_size=0;
}
public Dian(int x,int y){
this.x=x;
this.y=y;
pen_color =new String("");
pen_size=0;
}
//拷贝构造函数;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(1)
public Dian(Dian d){
x=d.x;
y=d.y;
pen_color = new String(d.pen_color);
pen_size=d.pen_size;
}
public void setPoint1(Dian d){
x=d.x;
y=d.y;
pen_color = new String(d.pen_color);
pen_size=d.pen_size;
}
public Dian getPoint1(){
return new Dian(this);
}
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 String toString(){
String s=new String("");
s=s+x+","+y+",\""+pen_color+"\","+pen_size;
return s;
}
}
class Xian extends Dian{
private int x1,y1;
public Xian(){
super();
x1=0;
y1=0;
}
public Xian(int x,int y,int x1,int y1){
super(x,y);
this.x1=x1;
this.y1=y1;
}
public Xian(Xian x){
Dian d=x.getPoint1();
setPoint1(d);
x1=x.x1;
y1=x.y1;
}
public void setX1(int x1){this.x1=x1;}
public void setY1(int y1){this.y1=y1;}
public void setDian1(Dian d1){x1=d1.getX();y1=d1.getY();}----------------------------------------------------------------------------------------------------------------------------(2)
public int getX1(){return x1;}
public int getY1(){return y1;}
public Dian getDian1(){return new Dian(x1,y1);}
}
public class Main {
public static void main(String[] args) {
Dian objDian=new Dian(10,20);
System.out.println(objDian);
}
}
1.拷贝构造函数的参数为什么为类名,参数是怎么传递的,里边的x=d.x左右x分别为谁的变量;
2.长线(2)这个类是两点画线的类,长线(2)这段代码是线的终止点的xy值,起始点xy为Dian类的xy,但是终止点的xy值返回的是Dian的xy那么起始点与终止点不久重复了吗?求解答;
啊啊啊,大佬们救救我吧,为了思考这个问题我已经两天没干别的事了,老师给了qq但是老师不用qq 1.一般都是
public Dian(int x, int y, String pen_color, int pen_size) {
this.x = x;
this.y = y;
this.pen_color = pen_color;
this.pen_size = pen_size;
}
不过传类也是可以的,和你的一样,则d.x就是你创建Dian对象里面第一个的参数,y是第二个.
2.里面的参数是新的Dian,x和y会变为你传递过去的新x,y
巴巴鲁 发表于 2021-9-29 09:45
1.一般都是
不过传类也是可以的,和你的一样,则d.x就是你创建Dian对象里面第一个的参数,y是第二个.
1.是不是说public Dian(Dian d)里的Dian d是我创建的Dian对象,d就是int x, int y, String pen_color, int pen_size的集合,d里边的这些都已经带有成员变量的值然后的d.x是在d里边取成员变量x的值赋值给等号左边的x值。如果是这样的话等号左边的x是谁的,我也没看到拷贝构造函数里边有重新定义一个x;
2.那Dian里线的初始点xy是哪个代码,x和y为什么会变为我传递过去的新x,y,能具体说一下吗。谢谢 1.x就是你Dian类的x,你试试变成其他变量名就会报错的
2.就覆盖了以前的值和int num = 10; num = 20;此时num就是20同理
public class Test {
public static void main(String[] args) {
Dian objDian=new Dian(10, 20);
Dian dian=new Dian(objDian); // 此时再调用参数为对象的构造函数,有点多此一举,建议使用
System.out.println("dian:" + dian);
System.out.println("dian类x的值:" + dian.getX());
dian.setPen_Color("red"); // 要通过这个方法才能对颜色赋值,不过这个方法你没有定义,还不如直接和我上一个回答的那样构造
objDian.setPoint1(new Dian(20 ,20));
System.out.println(objDian);
}
} 巴巴鲁 发表于 2021-9-29 11:54
1.x就是你Dian类的x,你试试变成其他变量名就会报错的
2.就覆盖了以前的值和int num = 10; num = 20;此 ...
1. public Dian(Dian d){
x=d.x;
y=d.y;
pen_color = new String(d.pen_color);
pen_size=d.pen_size;
}这个拷贝构造函数两边x都是成员变量x的话那么这个还有什么意义吗,自己给自己赋值自己
2.但是这个不是getX的方法吗,怎么覆盖,覆盖不应该是setX吗。
还有Dian里的getX方法中return的x值是成员变量的x值吗 oooooook 发表于 2021-9-29 16:04
1. public Dian(Dian d){
x=d.x;
y=d.y;
1.把参数里的内容赋值给类里的x,所以一般都不这样写的
2.实质get取你新建对象里的值覆盖给原来的对象,是 巴巴鲁 发表于 2021-9-29 17:03
1.把参数里的内容赋值给类里的x,所以一般都不这样写的
2.实质get取你新建对象里的值覆盖给原来的对象, ...
明白了谢谢,我终于能break这个循环了
页:
[1]