1.7对象初始化

本文讲解了对象初始化的过程,包括系统自动调用构造方法为实例变量进行初始化,以及对象回收的基本概念。深入探讨了构造方法的特点,如名称与类名相同、无返回类型等,并通过银行账户类的实例说明了如何定义和使用构造方法。

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

对象初始化

系统在生成对象时,会为对象分配内存空间,并自动调用构造方法对实例变量进行初始化

对象回收

对象不再使用时,系统会调用垃圾回收程序将其占用的内存回收

构造方法

 - 方法名与类名相同
 - 不定义返回类型

通常被声明为公有(public)

  • 可以有任意多个参数
  • 只能用来创建对象,不能显式地调用(在生成一个对象时,系统自动调用该类的构造方法为新对象初始化)
  • 若未显式地声明构造方法,编译器隐含生成默认构造方法(一个类必须有构造方法)

默认构造方法

  • 没有参数(内部类除外),方法体为空
  • 使用默认方法初始化对象时,如果在类声明没有给出实际变量赋初值,则对象的属性为0或为空
  • 构造方法也是类的方法成员,同样可以有参数

用来描述初始化对象
描述初始化算法的地方

编译器不可能知道你想怎么去初始化,只能人为制定

//银行账户类(无构造方法)
//此类定义以下3个属性
public class BankAccount{
     String owerName;  //户主名
     int  accountNumber; //银行账号
     float  balance;  //余额
//银行测试类
public class BankTester{
    public static void main(String args[ ]){
       BankAccount myAccount=new BankAccount(); //构造一个账户实例
    
      System.out.println("ownerName="+myAccount.ownerName); 
      System.out.println("accountNumber="+myAccount.accountNumber);
      System.out.println("ownerName="+myAccount.balance);
      //使用[对象].[属性]依次输出新构造的对象的三个属性
      }
}

//运行结果

ownerName=null (String对象 类型自动初始化为null)
accountNumber=0 (int类型初始化为0 )
balance=0.0 (float自动初始化为0.0)


由上可见,java类中即使没有定义构造方法,系统也会为不同的数据类型赋予初值
(默认情况下,值类型初始化成0,引用类型定义为空)

自定义构造方法与方法重载

  • 在生成对象时给构造方法传送初始值,为对象进行初始化

  • 构造方法可以被重载

  • 一个类中有两个及以上同名方法,但参数列表 不同,这种情况叫做重载,可以通过参数列表不同来辨别应该调用哪个方法

  • 只要显式地声明了构造方法,编译器就不再生成默认的构造方法

  • 可以显示地声明无参数的构造方法,方法体中可以定义默认初始化方式

为银行账户类声明构造方法

//为银行账户类声明带有三个参数的构造方法(创建对象时需要写上实参)
public BankAccount(String initName,init initAccountNumber,float initBalance){
       ownerName=initName;   //户主名
       accountNumber=initAccountNumber;//账号
       balance=initBalance;//余额
}
//假设一个新账号的初始余额可以为0,则可增加一个拥有两个参数的构造方法
  public BankAcount(String initName,initAccountNumber){
       ownerName=initName;
       accountNumber=initAccountNumber;
      balance=0.0f;  //默认余额初始化为0
}
//无参的构造方法——自定义默认的初始化方式(虽无参数,方法体也有初始化逻辑)
  public BankAccount(){
       ownerName=" ";
       accountNumber=999999;
       balance=0.0f;  
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值