Class Outer
{
...
private class Node
{
private T data;
...
private T getData()
{
return data;
}
}
}
如果外部类可以访问内部类的私有成员,那么使用set和get方法的目的是什么?将内部类设置为私有的目的是什么?还有包访问权限的作用是什么?
Class Outer
{
...
private class Node
{
private T data;
...
private T getData()
{
return data;
}
}
}
如果外部类可以访问内部类的私有成员,那么使用set和get方法的目的是什么?将内部类设置为私有的目的是什么?还有包访问权限的作用是什么?
私有内部类用于当你不想将类暴露给包内或包外的其他类时,只在外部级别类中使用。
由于可以直接访问实例变量,因此通常不需要在私有类中使用getter和setter方法。
您可以跳过琐碎的getter和setter方法,但通常这些方法是非琐碎的(常见情况是“延迟加载”模式)。
编辑以添加: 延迟加载是仅在请求数据时才实例化成员的过程。当不总是需要获取数据且获取数据时代价很高时,就会使用它。
class a
{
private:
int m_aNumber;
bigDeal *m_pBig;
public:
a() { m_aNumber = 0; m_pBig = NULL; }
~a() { if (m_pBig) delete m_pBig; }
// trivial
int get_aNumber() { return m_aNumber;}
void set_aNumber(int val) { m_aNumber = val; }
// lazy load
bigDeal *get_Big()
{
if (m_pBig == NULL)
{
// bigDeal::bigDeal() downloads data from Mars Rover
// takes 20 minutes, costs $1.2 million dollars to run
m_pBig = new(bigDeal);
}
return m_pBig;
}
void set_Big(bigDeal *val)
{
m_pBig = val;
}
}