[18/11/25] 构造方法

1、构造方法(constructor)

含义:

          构造方法(也叫构造器),用于对象的初始化;是一个创建对象时被自动调用的特殊方法,目的是对象的初始化。构造方法的名称应与类的名称一致。Java通过new关键字来

调用构造器,从而返回该类的实例,是一种特殊的方法。当然也可以重载。

格式:                                                //   1. 通过new关键字调用          2、构造方法的方法名必须和类名一致!

         [修饰符]  类名 (形参){               //   3. 构造方法虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造方法里使用return返回某个值。

             语句;                                 //    4. 如果没有定义构造方法,则编译器会自动定义一个无参的构造函数。如果应经定义则编译器不会自动添加!

}

代码示例:

 1 class Point  //构造方法(也叫构造器)
 2 {
 3     double x,y;
 4     public Point(double _x,double _y) //构造方法(一种特殊的方法) 原则:1、方法名与类名相同  
 5     {     // 2、不能定义返回值类型,即public int Point或return X;是错误的(虽然这个方法可以给你返回1个值).单独写return是对的     
 6         x=_x; //    但是没有必要,此时return 表示结束方法的运行(作用之一,注:另一个作用是返回一个值)
 7         y=_y;
 8     }
 9 
10     public double getDistance(Point z) //普通方法  
11     {                        //这里的z是个Point类型(类似于int型 double型的数据类型)的形参,意味着是它具有x,y这2个属性可以操作
12         return Math.sqrt( (x-z.x)*(x-z.x)+(y-z.y)*(y-z.y) );
13     }
14 }
15 
16 
17 
18 public class Test_1125_01  //构造方法与普通方法的区别:1、构造方法在实例化对象(new)时只调用1次 2、普通方法是在实例化对象产
19                          //生之后,通过对象.方法调用多次。
20 {
21     public static void main(String[] args) 
22     {
23         Point p=new Point (3.0,4.0); //构造方法 通过这步 完成了实例化对象,并操作了对象p属性  使对象p属性为 x=3.0 y=4.0  
24            //可以看出:构造方法的主要作用是 【对象的初始化操作】  即若希望对象实例化的同时给其赋值,则可以使用构造方法
25     
26         Point origin= new Point(0.0,0.0);
27 
28         System.out.println(p.getDistance(origin)); //此时对象origin经过初始化之后 x已经=0.0 y已经=0.0
29                   //对象p调用getDistance方法, 实参origin送到形参z处,输出结果
30 
31 
32     }
33 }

2、构造方法的重载(与普通方法没有什么区别)

【代码示例】

 1 class User
 2 {
 3     int id; //成员变量id name pwd
 4     String name;
 5     String pwd; //构造方法的重载演示
 6     public User(){ //无参数的构造方法
 7     
 8     }
 9     public User(int id,String name){ //局部变量 id 和name(与成员变量名字相同,需加 this 关键字,this表示创建好的对象)
10         super();      //构造方法第1句总是super(),即使不写,编译器自动添加并执行这一句
11         this.id=id;  //此处的this.id 是指成员变量 id(不是最近的局部变量 id),如果不加this根据就近原则指的是局部变量 id
12         this.name=name;
13 
14     }
15 
16     public User(int id,String name,String pwd){
17         //super();
18         this.id=id;
19         this.name=name;
20         this.pwd=pwd;
21     }
22 
23 }
24 
25 
26 public class Test_1125_02 
27 {
28     public static void main(String[] args) 
29     {
30         User u1=new User();
31         User u2=new User(101 ,"李白");
32         User u3=new User(102,"杜甫","123456");
33 
34         System.out.println(" 编号:"+u2.id+"\t"+"姓名:"+u2.name);
35         System.out.println(" 编号:"+u3.id+"\t"+"姓名:"+u3.name+"\t"+"密码:"+u3.pwd);
36 
37     }
38 }

  

  

  

猜你喜欢

转载自www.cnblogs.com/ID-qingxin/p/10016541.html