반응형
Notice
Recent Posts
Recent Comments
Link
DNF LOVE
[C++문법] Class, 추상 클래스, 인터페이스 상속 등 사용하기 본문
반응형
1. 클래스 : 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성과 행위를 변수와 메서드로 정의하는 것, 객체를 담아두는 그릇
class Person {
public :
string name;
int age;
Person() {
this->name = "";
this->age = 0;
}
Person(string name, int age) {
this->name = name;
this->age = age;
}
void printALL() {
cout << name << " " << age << endl;
}
};
int main() {
Person p1("김아무개", 20);
p1.printALL();
return 0;
}
2. 추상 클래스 : 생성자, 멤버변수, 일반 메서드를 자유롭게 사용할 수 있으며 여기에 1개 이상의 추상 메서드가 포함되어 있는 메서드
** 추상 메서드 : 하나의 변수명, 함수 명 등이 상황에 따라 다른 의미로 해석될 수 있는 다형성에 기반하여 부모 클래스의 메서드와 같은 이름 매개변수를 재정의하여 자식 속성에 맞게 함수를 구현할 수 있도록 하는 메서드이다.
** 추상메서드를 사용하는 이유는 해당된 속성을 반드시 사용하여 재정의를 해야하는 필요가 있기 때문이다.
class Animal {
public :
// 일반 멤버 변수
string name;
Animal(string name) {
// 생성자 사용 가능
this->name = name;
}
Animal() {}; // 생성자
~Animal() {}; //소멸자
void print() {
// 일반 함수 사용 가능
cout << name << endl;
}
// 가상 함수
virtual void cry() = 0;
};
class Dog : public Animal {
public :
virtual void cry() {
cout << "멍멍 이건 강아지 울음소리 Animal부모 클래스를 받아서 오버라이딩 하기" << endl;
}
};
class Cat : public Animal {
public :
virtual void cry() {
cout << "야용 이건 고양이 울음소리 Animal부모 클래스를 받아서 오버라이딩 하기" << endl;
}
};
int main() {
// Animal a; // 추상 클래스는 단일로 선언할 수 없다.
Dog d;
d.cry();
Cat c;
c.cry();
}
3. 인터페이스 : 오로지 추상 메서드만으로 이루어져 있다.
class Animal {
public :
virtual void cry() = 0;
virtual void gender() = 0;
};
class Dog : public Animal {
public :
virtual void cry() {
cout << "멍멍 이건 강아지 울음소리 Animal부모 클래스를 받아서 오버라이딩 하기" << endl;
}
virtual void gender() {
cout << "Gender?? " <<endl;
}
};
class Cat : public Animal {
public :
virtual void cry() {
cout << "야용 이건 고양이 울음소리 Animal부모 클래스를 받아서 오버라이딩 하기" << endl;
}
virtual void gender() {
cout << "Gender?? " << endl;
}
};
int main() {
Dog d;
Cat c;
d.gender();
c.cry();
return 0;
}
반응형
'Programming > C++' 카테고리의 다른 글
[C++문법] 생성자와 소멸자 그리고 접근자와 getter, setter 소멸자 그리고 접근자와 getter, setter 함수 (0) | 2019.10.23 |
---|---|
c++ 문법> 반복자 Iterator(Vector를 사용하여 예제) (0) | 2019.10.23 |
C++> STL(Standard Template Libary) Contains (0) | 2019.10.23 |
C++ STL> Vector Container 에 대해 알아보자.(2차원 vector 사용) (0) | 2019.10.23 |
C++문법> STL의 string에 대해 알아보자. (string과 char 배열과의 차이) (0) | 2019.10.23 |