2. 类与对象 & 构造方法与初始化

人走茶凉 提交于 2020-03-27 12:13:24

类与对象的关系:

  • 类是对一类对象的描述
  • 对象是类的具体实例(对象==实例)
[public] [abstract | final] class 类名
[extends 超类]
[implements 接口列表]
{
        数据成员声明及初始化;
        方法成员声明及方法体;
}

以上是类声明语法 [ ] 外面的都不能省。

 

对象声明与创建:创建类的实例(对象),通过对象使用类的功能。

 * 使用对象之前,先声明指向它的引用变量。

例子:Table aTable;

    aTable = new Table();

解释:Table是已经声明的类名,声明引用变量aTable,用于存储该类对象的引用;声明一个引用变量时并没有生成对象。

    第二行创建对象,new的作用时:在内存中为Table类的对象分配内存空间;让对象返回它的引用(aTable)。

 

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

构造方法:用来初始化对象,每个类都需要有构造方法。分为默认构造方法和自定义构造方法。

默认构造方法:

  • 没有参数,方法体为空;
  • 使用默认的构造方法初始化对象时,如果在类声明中没有给实例变量赋初值,则对象的属性值为0或null。

一个默认构造方法的例子:

class BankAccount {
    String ownerName;
    int    accountNumber;
    float balance;
}

public class BankTest {
    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("balance = " + myAccount.balance);
        
    }
}

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

  • 在生成对象时给构造方法传送初始值,为对象进行初始化
  • 构造方法可以被重载
    • 一个类中有两个及以上同名的方法,但参数表不同,这种情况就被称为方法重载。在方法调用时,可以通过参数列表的不同来辨别应该调用哪个方法。
  • 只要显式声明了构造方法,编译器就不在生成默认的构造方法;也可以显式声明无参数的构造方法,方法体中可以定义默认初始化方式。
public BankAccount(String initName, int initAccountNumber, float initBalance) {
    ownerName = initName;
    accountNumber = initAccountNumber;
    balance = initBalance;
}
public BankAccount(String initName, int initAccountNumber) {
    this(initName, initAccountNumber, 0.0f);
}
public BankAccount() {
    this("", 0, 0.0f);
}
    

为类BankAccount自定义构造方法,使用this关键字在一个构造方法中调用另外的构造方法

根据初始化时传入的初始值数量不同,对象初始化时调用不同的构造方法。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!