构造函数
构造函数用于初始化一个对象。一个类中可以有多个构造函数,当你使用 new
关键字创建一个类的实例时,系统会根据你传递的参数来选择合适的构造函数。如果没有找到匹配的构造函数,那么系统会报错。下面是一个例子。
第一个构造函数是一个无参构造函数,它将 x
和 y
变量的值都初始化为 0
。第二个构造函数接受两个整数参数,用于初始化 x
和 y
变量的值。
public class MyClass {
private int x;
private int y;
public MyClass() {
x = 0;
y = 0;
}
public MyClass(int x, int y) {
this.x = x;
this.y = y;
}
}
MyClass myObject1 = new MyClass();
MyClass myObject2 = new MyClass(10, 20);
初始化列表
构造函数的初始化列表是一种特殊的语法,用于在构造函数中初始化类的成员变量和基类。它位于构造函数签名和函数体之间,以冒号 :
开始。初始化列表中的每一项都用逗号 ,
分隔。
每一项都包含一个成员变量或基类的名称,后跟一对圆括号,括号内是用于初始化该成员变量或基类的表达式。例如,在这段代码中:
AudioStreamOutSink::AudioStreamOutSink(sp<StreamOutHalInterface> stream) :
NBAIO_Sink(),
mStream(stream),
mStreamBufferSizeBytes(0)
{
ALOG_ASSERT(stream != 0);
}
构造函数的初始化列表包含三项:NBAIO_Sink()
、mStream(stream)
和 mStreamBufferSizeBytes(0)
。
NBAIO_Sink()
这一项表示调用基类NBAIO_Sink
的默认构造函数来初始化基类部分。mStream(stream)
这一项表示使用传入的stream
参数来初始化成员变量mStream
。mStreamBufferSizeBytes(0)
这一项表示使用常量0
来初始化成员变量mStreamBufferSizeBytes
。