일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- python
- 백준
- 자바스크립트
- C++
- 카카오
- javascript
- typescript
- 동적계획법
- LeetCode
- Level2
- web
- Medium
- 프로그래머스
- Level1
- react
- CS
- VUE
- 고득점Kit
- 코테연습
- OS
- dp
- Doitvue.js입문
- sql
- 웹프로그래밍
- 리트코드
- 프로그래밍
- 파이썬
- 배열
- 리액트
- Level3
- Today
- Total
목록상속 (4)
virtual function 부모 메소드 앞에 virtual 키워드를 사용하면 부모객체 포인터에서 업캐스트했을 때에도 오버라이드한 자식 메소드를 실행할 수 있다. (자식 객체 포인터에 부모 객체를 다운캐스트 했을 경우에도 ) class Shape{ public: void Move(double x, double y); virtual void Draw(); // pure virtual function Shape(); Shape(double x, double y); protected: double _x, _y; }; void Shape::Draw() const{ cout
자식과 부모 대입 연산 자식에 부모 대입 불가, 포인터나 레퍼런스도 마찬가지임 (다운캐스트) 부모에 자식 대입 가능, 포인터나 레퍼런스도 마찬가지임 (업캐스트)Children c; Parents p; c = p; //에러 p = c; //가능 p.override() // 부모의 메소드가 실행됨 다운캐스트 특수 케이스 업캐스트 후에 다운 캐스트는 가능 HTMLWriter hw; DocWriter* pdw = &hw; //upcast HTMLWriter* phw = (HTMLWriter*)pdw; //downcast
형식 class Children(Parent): (생략) 2 super() 부모 메소드를 실행하면서 오버라이드 하고 싶을때 class Parents: def __init__(self): print("안녕") class Children(Parents): def __init__(self): super().__init__() print("하세요") p = Parents() c = Children() //출력 결과 // 안녕 // 안녕 // 하세요 3. Exception 클래스를 상속해서 사용자 정의 에러 만들기 class MyException(Exception): def __init__(self): pass
* class Children : public Parents 형식 * protected 변수는 부모 자식 관계일 때는 접근 가능 * 부모의 생성자를 오버라이딩 하는 경우 Children::Children() :Parents(){//초기화 리스트 }; * 부모 클래스의 메소드 오버라이딩도 가능함