oooooook 发表于 2021-9-28 20:42:17

啊啊,救命啊,不明白睡不着觉

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

巴巴鲁 发表于 2021-9-29 09:45:01

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

oooooook 发表于 2021-9-29 11:19:17

巴巴鲁 发表于 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,能具体说一下吗。谢谢

巴巴鲁 发表于 2021-9-29 11:54:10

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);
    }
}

oooooook 发表于 2021-9-29 16:04:49

巴巴鲁 发表于 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值吗

巴巴鲁 发表于 2021-9-29 17:03:28

oooooook 发表于 2021-9-29 16:04
1.   public Dian(Dian d){
      x=d.x;
      y=d.y;


1.把参数里的内容赋值给类里的x,所以一般都不这样写的
2.实质get取你新建对象里的值覆盖给原来的对象,是

oooooook 发表于 2021-9-29 22:07:13

巴巴鲁 发表于 2021-9-29 17:03
1.把参数里的内容赋值给类里的x,所以一般都不这样写的
2.实质get取你新建对象里的值覆盖给原来的对象, ...

明白了谢谢,我终于能break这个循环了
页: [1]
查看完整版本: 啊啊,救命啊,不明白睡不着觉