在Java中使用构造函数wit新对象

时间:2016-02-24 12:43:27

标签: java constructor swap

public class swap
{
    public class Point
    {
        public int x=0;
        public int y=0;

        public Point(int a, int b)
        {
            this.x = a;
            this.y = b;
        }

        public void swapxy(Point p)
        {
            int t;

            t = p.x;
            p.x = p.y;
            p.y = t;
        }

        public String ToString()
        {
            return ("x="+x+" y="+y);
        }
    }


    public static void main(String[] args) 
    {
        Point pxy = Point(10,20);

        pxy.swapxy(pxy);
        System.out.println(pxy);

    }

}

我得到的方法是Point pxy = Point(10,20);错误的未定义错误?

4 个答案:

答案 0 :(得分:3)

您忘记了new关键字:

Point pxy = new Point(10,20);
            ↑↑↑

答案 1 :(得分:3)

你忘记在" =";

之后写新的

正确的方法是:

Point pxy = new Point(10,20);

哦,重点是您要使用的类是Swap的innerClass,因此您必须在使用它之前对其进行实例化。

如果你不需要在内部类中,请在一个单独的文件中声明这个类,或者你可以像下面的代码一样:

 public class Swap {
        //add static in the class to access it in a static way
         public static class Point
        {
//change the attributes to private, this is a good practice
            private int x=0;
            private int y=0;

            public Point(int a, int b)
            {
                this.x = a;
                this.y = b;
            }

            public void swapxy(Point p)
            {
                int t;

                t = p.x;
                p.x = p.y;
                p.y = t;
            }

            public String ToString()
            {
                return ("x="+x+" y="+y);
            }
        }

         public static void main(String[] args){

              Swap.Point pxy = new Swap.Point(10,20); 
              System.out.println(pxy.ToString());
         }

    }

答案 2 :(得分:1)

正确的方式:Point pxy = new Point(10,20);

答案 3 :(得分:1)

要创建实例,请使用' new'关键字