- C언어
// MyClass
class MyClass
{
private:
string m_strName;
int m_nAge;
public:
virtual void SetName( string& strName) = 0;
virtual void SetAge( int nAge) = 0;
};
// NewMyClass
class NewMyClass : public MyClass
{
public:
virtual void SetName( string& strName);
virtual void SetAge( int nAge);
};
void NewMyClass::SetName( string& strName)
{
m_strName = strName;
}
void NewMyClass::SetAge( int nAge)
{
m_nAge = nAge;
}
- 루아
-- MyClass
MyClass = {};
MyClass.m_strName = "";
MyClass.m_nAge = 0;
function MyClass:new()
instance = {};
setmetatable( instance, self);
self.__index = self;
return instance;
end
function MyClass:SetName( strName)
end
function MyClass:SetAge( nAge)
end
-- NewMyClass
NewMyClass = MyClass:new();
function NewMyClass:SetName( strName)
MyClass.m_strName = strName;
end
function NewMyClass:SetAge( nAge)
MyClass.m_nAge = nAge;
end
위 예제처럼 부모 테이블에 새 인스턴스를 생성해서 반환해주는 new 함수를 만들고, 새 테이블을 생성할 때 이 함수를 호출함으로써 부모의 기능을 상속 받습니다. 또한, 부모의 함수를 다시 정의하면 함수 오버라이딩(overriding)이 가능합니다.
댓글 없음:
댓글 쓰기