当前位置:  技术问答>java相关

这个结果如何理解?(菜鸟级问题)

    来源: 互联网  发布时间:2015-01-18

    本文导语:  public class Point2D {     int x;     int y;     Point2D() {         this(0, 0);     }     Point2D(int i) {         this(i, 0);     }     Point2D(int i, int j) {         x = i;         y = j;     }   ...

public class Point2D {
    int x;
    int y;
    Point2D() {
        this(0, 0);
    }
    Point2D(int i) {
        this(i, 0);
    }
    Point2D(int i, int j) {
        x = i;
        y = j;
    }
    double length() {
        return Math.sqrt(x * x + y * y);
    }
}

public class MyPoint extends Point2D {
    int x;
    int y;
    MyPoint(int i, int j) {
        super(i, j);
        x = i;
        y = j;
    }
    double distance() {
        return Math.abs(length() - super.length());
    }
    double length() {
        return Math.sqrt(x * x + y * y);
    }
}
import java.io.PrintWriter;

public class PointTest {
    public static void main(String args[]) {
        PrintWriter printwriter = new PrintWriter(System.out, true);
        MyPoint mypoint = new MyPoint(4, 3);
        Point2D point2d = new Point2D(11);
        MyPoint mypoint1 = mypoint;
        mypoint.x = 5;
        mypoint.y = 12;
        printwriter.println("ntCasting Test:n");
        printwriter.println("(Point2D)mp = (" + ((Point2D) (mypoint)).x + ", " + ((Point2D) (mypoint)).y + ")");
        printwriter.println("(MyPoint)q  = (" + ((MyPoint)mypoint1).x + ", " + ((MyPoint)mypoint1).y + ")");
}
}
该程序输出结果是:
(Point2D)mp = (4, 3)
(MyPoint)q  = (5, 12)
这个结果好象和我的理解有点出入。
各位大虾
麻烦哪位能帮忙解释一下吗?
谢谢!

|
不是解释!!  你可以用调试程序跟踪一下,或简单一点,在每一个可以的地方加上System.out.pringln标注程序执行的过程。一般在构造器和方法函数中。

|
第二个结果很清楚,那个(Mypoint)类型强制是没有实际意义的,

因为mypoint1本来就是这个类的,因此去掉这个类型强制也一样。

那句“MyPoint mypoint1 = mypoint”使mypoint1和mypoint具有

共同的值,如果换一种付值法,例如"MyPoint mypoint1 = new 

MyPoint(mypint.x,mypoint.y)"那么第二个结果就是(4,3)了。

第一个结果你得这样理解,主要是那个super(i,j)会完成什么操作,

当在main方法里定义" MyPoint mypoint = new MyPoint(4, 3);"时

super会调用Point2D的构造函数,那么就会形成两个实例,一个是

Point2D类型的mypoint,一个是MyPoint类型的mypoint,它们的x,y

值都是4,3,当执行完"mypoint.x = 5; mypoint.y = 12;"时,只改

变了 mypoint的MyPoint实例,所以当mypoint被类型强制成Point2D

时,它的值会是(4,3),如果没有那个super那么第一个结果应该是

(0,0).



    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于awk提取文本时的一个输出结果显示问题
  • QT中QProcess::execute的执行的结果的问题?
  • 关于查询结果集异常错误的问题,谢谢帮忙!
  • Unix中最简单的问题:输入一个表达式,显示其结果。使用SCO OpenServer
  • SQLSERVER的排序问题结果不是想要的
  • gcc下结果显示的问题(急!!在线等候)
  • oci开发问题(关于查询结果集)!
  • 运行的程序的结果答应出日志的问题
  • 关于jdbc的问题,如何得到结果记录的条数。
  • sed问题,查了半小时,没找到结果
  • 用Sed处理后的结果给数组赋值的问题
  • 关于格式化输出shell结果的问题?
  • 一个在linux/unix开发区问了2天没有结果的问题
  • 讨论一个小问题(关于数据库查询结果)
  • 关于数据库查询结果分页显示的问题
  • 请问一个关于数据库的查询结果返回resultset的问题
  • win2000下编译java程序看不到运行结果的问题,今天解决加到100分!!!
  • 简单问题, ls -l显示的结果中每一列表示的具体含义是什么?
  • 返回结果集的问题
  • 求助!关于翻页的问题,在JAVA中如何计算从数据库中取出的结果集总共可显示多少页?
  • 将ResultSet结果集中的记录映射到Map对象中
  • linux 命令执行结束后,想查看结果,但部分结果已经被覆盖,如何查看?
  • linux下top命令详解包括top命令参数使用及结果(virt,res,shr)排序举例说明
  • 请教:在用lspci命令显示结果中,每一行结果结尾有(rev xx)之类字符,这个代表什么意思?
  • QT中QProcess::execute的执行的结果的问题? iis7站长之家
  • 为什么jsp文件已经改动,但运行结果却还是改动前的结果?
  • 为何makefile中执行的结果和直接在命令行中执行结果不一致?
  • 请问JDBC中返回结果参数的存储过程{?=call 过程名(?,?,...)}返回的结果如何得到?
  • top与ps命令输出结果差异以及top结果的重定向
  • shell中关于sql查询结果的判断?
  • 可以有办法把多个结果集合并吗


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3