java构造方法与方法的区别

构造方法是定义在java类中的一个用来初始化对象的函数,其方法名和类名相同,但是通常不显示地它,在创建类的一个实例时,构造方法就像一个方法一样被调用,因为从来不显示地调用它,所以无法访问其返回值,即构造函数不返回值。

构造方法的小例子:

Public class person{
   Int id ;
   Int age;
   Person(int n, int i){
      Id = n;
      Age = I;
   }
}

我们从上面的说明中,可以看出构造方法和方法是有区别的,主要表现在一下方面:

1、  修饰符:构造方法像普通方法一样,可以有任何的访问修饰符public、protected、private,但是不能有abstract、final、static等非访问修饰符;

2、  返回值:构造方法没有返回值,void也不行;

3、  命名:构造方法和类具有相同的名字,而类最好不要。

4、  编写:构造方法可以自己编写也可以系统默认,显然普通方法只能自己编写;

5、  调用:在创建对象或是调用静态成员变量时,首先会调用构造方法,是系统自动调用,而普通的方法只能实例化完对象,才能用对象调用。

上面只是简单的对比了一下构造方法和普通方法,下面我们在具体看一下。

(1)     this用法:

对于方法引用this指向正在执行方法的类的实例;静态方法不能使用this关键字;构造方法指向这个对象的另一个构造方法,示例如下:

Public class Person{
   String name;
   int age;
   String sex;
   Person (string n, int g , string s){
      name = n;
      age = g;
      sex = s;
   }
   Person ( string n ,I nt g){
      This(n,g,”男”)
   }
   Public Static void main(String args[] ){
     Person  p1 = new Person(“hua”,20,”女”);
     Person  p2 =new Person(“yang”,20);
     System.out.println(p1.name +”,” +p1.age +”,”+ p1.sex);
     System.out.println(p2.name +”,” +p2.age +”,”+ p2.sex);
   }
}

运行结果如下:

分析上面的代码得出,Person类中的第二个构造方法调用了第一个构造方法。

注意:在构造方法中只能调用一次其他的构造方法,并且并且调用构造方法的语句必须是第一条语句,否则编译错误。

(2)      继承中构造方法:

构造方法和普通方法,都用关键字super指向超类,但是使用方法不同。

1)  普通方法:执行被重载的超类中的方法,代码如下:

Class  Person{
   Public void eat(){
     System.out.print(“想要吃好吃的”);
   }
}
Class Woman{
  Public void eat(){
super.eat();
System.out.print(“不行,还是减肥吧”);
  }
}

2)  构造方法:调用超类中的构造方法,且必须放在第一行,否则出错,代码如下:

Class  Person{
   Person(){ }
}
Class Woman{
  Woman(){
    Super();
  }
}

注意:如果子类构造方法中既没有显示调用积累构造方法,而基类中又没有午餐的构造方法,则编译后出错。

      这里还有一点是需要大家注意的,在包含构造方法的初始化顺序如下:

      1.主类的静态成员首先初始化;

     2.主类的超类的构造方法按照从最高到最低的顺序被调用;

     3.主类的非静态对象(变量)初始化;

     4.调用主类的构造方法;

     总之,构造方法并不难理解,但是在我们应用的过程中要细心,这样才不会出错。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值