Re: [問題] 物件的問題
System.out.println 這一個 method 如果你傳 object 進去而沒有
呼叫任何的 method, 他 default 會呼叫 toString() 這個 method.
※ 引述《idman (9527)》之銘言:
: //修改物件的屬性
: class MyPoint
: {
: protected double x;
: protected double y;
: MyPoint()
: {
: setX(0);
: setY(0);
: }
: MyPoint(double x, double y)
: {
: setX(x);
: setY(y);
: }
: public void setX(double x)
: {
: this.x = x;
: }
: public void setY(double y)
: {
: this.y = y;
: }
: public double x()
: {
: return x;
: }
: public double y()
: {
: return y;
: }
: public String toString()
: {
: return "[" + x + "," + y + "]";
: }
: }
: class MyLine
: {
: private MyPoint pt1, pt2;
: MyLine(MyPoint pt1, MyPoint pt2)
: {
: this.pt1 = pt1;//對物件設值
: this.pt2 = pt2;//對物件設值
: }
: public double getMyLineLength()
: {
: return Math.sqrt((pt2.x() - pt1.x())
: *
: (pt2.x() - pt1.x())
: +
: (pt2.y() - pt1.y())
: *
: (pt2.y() - pt1.y()));
: }
: public String toString()
: {
: return "point1:" + pt1 + ",point2:" + pt2;
: }
: }
: public class Demo108
: {
: public static void main(String[] args)
: {
: MyPoint pt1 = new MyPoint(1, 1);
: MyPoint pt2 = new MyPoint(2, 2);
: MyLine line1 = new MyLine(pt1, pt2);
: System.out.println("line1 = " + line1);
: //修改物件的屬性,使物件的內部狀態發生變化
: //就是對物件設值
: pt1.setX(0);
: pt1.setY(0);
: System.out.println("修改了線段起點以後");
: System.out.println("line1 = " + line1);
: }
: }
: 我的問題是 當中並沒有呼叫 toString()這個函數
: 請問為什麼會執行到當中的值呢
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.43.134
討論串 (同標題文章)