“访问者方法”和“构造函数”之间有什么区别?
答案 0 :(得分:4)
构造函数初始化一个新对象。访问者允许外部调用者获取有关对象状态的信息。
答案 1 :(得分:2)
构造函数是负责对象初始化的函数。它是在创建类的新实例时调用的(静态或动态使用new
),它允许您显式初始化对象的内部属性或执行任意代码。它由析构函数补充,在释放对象时(在释放之前)自动调用析构函数。一个例子是一个具有指向数组的指针的类;在构造函数中,您将分配数组,并在析构函数中释放构造函数中分配的内存。
访问器方法(或getter)是一种允许您访问对象的内部属性的方法。它与setter串联使用以封装对象的某些属性。访问器应该是不可变的(也就是说,它不应该影响对象的内部状态)。
注意,摘录析构函数,类的所有方法都可以重载,包括构造函数。采用同一类对象的const引用的构造函数称为复制构造函数。作为默认构造函数,它由编译器自动生成,默认情况下,它逐字段复制所有属性。由于并不总是需要这种行为,因此您可以实现复制构造函数以便能够正确复制另一个对象(或者停止复制 - 请参阅boost :: noncopyable)。
示例:
// C++
class Foo {
int i;
public:
// Copy constructor
Foo(const Foo& foo) {
this->i = foo.i;
// Here you can do other stuff, beside raw copying...
}
};
class Bar {
public:
// Constructor
Bar() {
m_foo = new Foo();
}
// Destructor
~Bar() {
delete m_foo;
m_foo = 0;
}
// Getter (hides the actual attribute)
const Foo* getFoo() const { return m_foo; }
// Setter
void setFoo(Foo* foo) {
// Create a copy of Foo
m_foo = new Foo(*foo);
}
private:
Foo* m_foo;
};
答案 2 :(得分:0)
构造函数是一个代码块,当您使用new关键字来实例化对象时,它会运行。 的 http://beginnersbook.com/2013/03/constructors-in-java/ 强>
访问器方法用于返回私有字段的值。它遵循命名方案,在单词“get”前面加上方法名称的开头。 的 http://java.about.com/od/workingwithobjects/a/accessormutator.htm 强>