关于子类定义的成员变量与父类的成员变量同名的问题?
如果子类定义的成员变量与父类的成员变量同名,要表明使用子类的成员变量,可以在成员变量前加上关键字super还是this啊?...
如果子类定义的成员变量与父类的成员变量同名,要表明使用子类的成员变量,可以在成员变量前加上关键字super还是this啊?
展开
2013-11-11
展开全部
通常成员变量是私有的,即程序中是不能直接修改对象的成员变量的值的。
在子类内部调用是加上this或者不加。
对于C/C++,举个例子:
#include <iostream>
using namespace std;
class Base
{
public:
Base()
{
nVal = 10;
}
void Out()
{
cout << nVal << endl;
}
protected:
int nVal;
};
class Son : Base
{
public:
Son()
{
nVal = 1000;
}
// 改变值
void Fun()
{
Base::nVal = 0;
nVal = -11;
}
void Out()
{
Base::Out();
cout << nVal << endl;
}
private:
int nVal;
};
int main(int argc, char *argv[])
{
Son son;
son.Fun(); // 改变值
son.Out(); // 输出nVal
system("PAUSE");
return 0;
}
在子类内部调用是加上this或者不加。
对于C/C++,举个例子:
#include <iostream>
using namespace std;
class Base
{
public:
Base()
{
nVal = 10;
}
void Out()
{
cout << nVal << endl;
}
protected:
int nVal;
};
class Son : Base
{
public:
Son()
{
nVal = 1000;
}
// 改变值
void Fun()
{
Base::nVal = 0;
nVal = -11;
}
void Out()
{
Base::Out();
cout << nVal << endl;
}
private:
int nVal;
};
int main(int argc, char *argv[])
{
Son son;
son.Fun(); // 改变值
son.Out(); // 输出nVal
system("PAUSE");
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询