注册 登录
编程论坛 JAVA论坛

构造器该如何理解?

ilsoviet1917 发布于 2022-03-09 10:49, 2458 次点击
程序代码:
public class Point {
        double x, y;
        
        public Point() {
                System.out.println("这是无参构造器");
        }
        
        public Point(double _x, double _y){
                System.out.println("这是有参构造器");
                x = _x;
                y = _y;
        }
        
        public double getDistance(Point p) {
                double d = Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
                return d;
        }
        
        public static void main(String[] args) {
                Point p = new Point();
                Point p1 = new Point(3.0, 4.0);
                Point origin = new Point(0, 0);
                System.out.println(p1.getDistance(origin));
        }
}


网上解释说,创建对象时系统会对这个对象的实例进行初始化,如果想改变这种初始化,就可以通过自定义构造器实现。现在有几个问题不明白:
1.
public class Point {
        double x, y;}
本身就有x和y,public Point(double _x, double _y)这一段有有啥意义呢?

2.public double getDistance(Point p)里面的Point p是public class Point还是public Point() 还是public Point(double _x, double _y)?
2 回复
#2
notime2022-03-19 18:12
1,构造器就是造出一个类的实例。
public Point(double _x, double _y) 就是构造器,传入 _x,_y 两个参数,给 x,y 赋值

2.public double getDistance(Point p)里面的 Point p 是
public class Point,另一个实例
#3
萌新丶乐乐2022-03-21 19:21
构造方法
当一个对象被创建时候,构造方法用来初始化该对象。构造方法和它所在类的名字相同,但构造方法没有返回值。
通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。
不管你是否自定义构造方法,所有的类都有构造方法,因为 Java 自动提供了一个默认构造方法,默认构造方法的访问修饰符和类的访问修饰符相同(类为 public,构造函数也为 public;类改为 protected,构造函数也改为 protected)。
一旦你定义了自己的构造方法,默认构造方法就会失效。
1