티스토리 뷰
상속(Inheritance)이란?
-
하나의 객체를 설계할 수 잇는 구체 또는 단일 클래스를 또 다른 클래스가 기능 추가 및 변경, 특성을 추가하여 새로운 클래스로 정의하는 것
-
기존에 정의된 클래스를 수퍼 클래스, 부모클래스, 선조클래스 라고 하며 상속을 받아 기능을 확장 하는 클래스를 하위 클래스, 자손, 후손 클래스, 파생 클래스 라고 부른다.
-
클래스 간의 상속은 멤버변수와 메소드를 또 다른 클래스에게 그대로 전해 준다.
-
선조클래스명.멤버 로 호출
-
생성자는 상속받을 수 없다
상속의 선언 방법
-
class 후손 클래스명(선조 클래스명, 선조 클래스명, ...)
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def PersonInfo(self):
return f'{self.name} : (age : {self.age})'
class Student(Person):
def __init__(self, name, age, grade):
Person.__init__(self, name, age)
self.grade = grade
def GetStudent(self):
return f'{self.PersonInfo()}, grade : {self.grade}'
if __name__ == '__main__':
x = Person('Dominica', 12)
y = Student('Ruri', 7, 3)
print(x.PersonInfo())
print(y.PersonInfo())
print(y.GetStudent())
super()
-
super() 키워드는 선조 클래스를 의미
class Student(Person):
def __init__(self, name, age, grade):
super().__init__(name, age)
self.grade = grade
def GetStudent(self):
return f'{self.PersonInfo()}, grade : {self.grade}'
오버라이딩(Overriding)
-
메소드 재정의라고도 하며 상속받은 후손 클래스에서 상속해준 선조 클래스에 이미 정의되어있는 메소드의 기능을 변경해서 새로 정의하는 것
-
오버라이딩 하고자 하는 메소드가 선조 클래스에 존재해야 한다.
-
메소드 명이 반드시 같아야 한다.
-
선조가 정의한 메소드의 파라미터 개수가 같아야한다.
-
리턴 형이 같지 않아도 된다.
class MyScore:
def __init__(self, kor, eng):
self.kor = kor
self.eng = eng
def getTot(self):
return self.kor + self.eng
class MyScore_Sub(MyScore):
def __init__(self, kor, eng, mat):
super().__init__(kor, eng)
self.mat = mat
def getTot(self):
return super().getTot() + self.mat
if __name__ == '__main__':
print(MyScore(56,76).getTot())
print(MyScore_Sub(100,100,100).getTot())
다중 상속
-
두 개 이상의 부모가 같은 메소드를 가지고 있을 때는 먼저 정의된 쪽이 호출된다.
-
class 후손 클래스 명 (BaseClass1, BaseClass2, BaseClass3, ...) :
<< 명령 >>
class Dog:
def sound(self):
print('bark')
class Cat:
def sound(self):
print('meow')
class Chimera(Dog, Cat):
pass
if __name__ == '__main__':
Chimera().sound()
'Python' 카테고리의 다른 글
예외처리 - Exception Handling, 사용자 Exception, assert 와 unittest (0) | 2020.08.28 |
---|---|
다형성 - 다형성, 추상화 (0) | 2020.08.28 |
클래스 - 클래스 변수, 인스턴스 변수, 클래스 메소드, 정적 메소드 (0) | 2020.08.28 |
함수 - 파라미터, 람다함수, 고차함수, 재귀함수, 스코핑룰 (0) | 2020.08.28 |
제어문 - 조건문, 반복문, 흐름 제어문 (0) | 2020.08.28 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- maven
- hadoop
- oracle
- linux
- Java
- Variable allocation
- 빅데이터
- springboot
- Spring
- gradle
- Allocation methods
- RAID Architecture
- jdbc
- HDFS
- Replacement Strategies
- Flume
- JSON
- 빅데이터 플랫폼
- mapreduce
- Disk Scheduling
- aop
- 하둡
- I/O Services of OS
- Disk System
- SQL
- SPARK
- I/O Mechanisms
- vmware
- Free space management
- File Protection
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함