鱼C论坛

 找回密码
 立即注册
查看: 3186|回复: 6

[已解决]啊啊,救命啊,不明白睡不着觉

[复制链接]
发表于 2021-9-28 20:42:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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.一般都是
  1. public Dian(int x, int y, String pen_color, int pen_size) {
  2.         this.x = x;
  3.         this.y = y;
  4.         this.pen_color = pen_color;
  5.         this.pen_size = pen_size;
  6.     }
复制代码

不过传类也是可以的,和你的一样,则d.x就是你创建Dian对象里面第一个的参数,y是第二个.
2.里面的参数是新的Dian,x和y会变为你传递过去的新x,y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-29 09:45:01 | 显示全部楼层    本楼为最佳答案   
1.一般都是
  1. public Dian(int x, int y, String pen_color, int pen_size) {
  2.         this.x = x;
  3.         this.y = y;
  4.         this.pen_color = pen_color;
  5.         this.pen_size = pen_size;
  6.     }
复制代码

不过传类也是可以的,和你的一样,则d.x就是你创建Dian对象里面第一个的参数,y是第二个.
2.里面的参数是新的Dian,x和y会变为你传递过去的新x,y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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,能具体说一下吗。谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-29 11:54:10 | 显示全部楼层
1.x就是你Dian类的x,你试试变成其他变量名就会报错的
2.就覆盖了以前的值  和int num = 10; num = 20;此时num就是20同理
  1. public class Test {
  2.     public static void main(String[] args) {
  3.         Dian objDian=new Dian(10, 20);
  4.         Dian dian=new Dian(objDian); // 此时再调用参数为对象的构造函数,有点多此一举,建议使用
  5.         System.out.println("dian:" + dian);
  6.         System.out.println("dian类x的值:" + dian.getX());
  7.         dian.setPen_Color("red"); // 要通过这个方法才能对颜色赋值,不过这个方法你没有定义,还不如直接和我上一个回答的那样构造
  8.         

  9.         objDian.setPoint1(new Dian(20 ,20));
  10.         System.out.println(objDian);
  11.     }
  12. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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值吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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取你新建对象里的值覆盖给原来的对象,是
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

明白了谢谢,我终于能break这个循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 07:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表