java 构造方法

本文详细介绍了构造方法的概念及其在对象初始化过程中的作用。包括构造方法的基本语法、如何与类名保持一致、为何不需要声明返回类型等特性。此外还讨论了构造方法不能被特定关键字修饰的原因,以及如何实现构造方法的重载和父类构造方法的调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造方法
在多数情况下,初始化一个对象的最终步骤是去调用这个对象的构造方法。构造方法负责对象的初始化工作,
为实例变量赋予合适的初始值。构造方法必须满足以下语法规则:

构造方法 的要求
·方法名必须与类名相同。

· 不要声明返回类型。 --和一般方法的区别

· 不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承,所以用final和abstract修饰没有意义。
构造方法用于初始化一个新建的对象,所以用static修饰没有意义。多个线程不会同时创建内存地址相同的同一个对象,
因此用synchronized修饰没有必要。此外,Java语言不支持native类型的构造方法。

1 构造方法是在实例化类的时候就会执行的程序
Duck d=new Duck ();
2构造方法必须与类名相同,并且没有返回的值
public Duck(int i){
}
3如果没有写构造方法,虚拟机会帮你写一个没有参数的构造方法
public Duck(int i){
}
3一个类可以有多个构造方法,这叫构造方法的重载(overload)参数必须不一样
public Duck(int i){
}
public Duck(int i){
}
如何调用父类的构造函数。
super();关键字用来调用父类的构造函数。
 编译器会自动加上super的调用。 有两者情况:
 //没有构造函数
 1 public ChildrenClass (){
  super();
  }
  2 //有构造函数,但是没有调用super();编译器会自动加上
 
 }
编译器帮忙的一定是没有参数的版本。
public class FatherClass {

 public FatherClass(int i){
  System.out.println("father ii");
 }
}

public class ChildrenClass extends FatherClass {

public ChildrenClass (int i){
 System.out.print("i");
 //编译报错implicit super constructor FatherClass() is undefined. Must explicitly invoke
 //another constructor
 
 }
 
 对super()的调用必须是在构造函数的第一句话
 
 
 构造方法之间 的重载
 public class ChildrenClass extends FatherClass {
 public ChildrenClass (int i){ 
  i=i+1;
  System.out.print(this.getI());
 }
public ChildrenClass (){
 this(99); 
    System.out.print(this.getI());
 }
 使用this()来从一个类的某个构造函数调用另外一个构造函数
 this()只能放在构造函数中,并且必须是在第一行。
 super()和this()不能一起用
 
 //Constructor call must be the first statement in a constructor 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值