일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- jsp
- ddit
- 배열
- servlet
- nodejs
- Mac
- FastAPI
- 자바
- API
- Java
- Android
- ibatis
- 컬렉션프레임워크
- 이클립스
- 자바문제
- JDBC
- 생활코딩
- 단축키
- 반복문
- spring
- Oracle
- 맥
- python
- Homebrew
- pyqt
- Error
- crud
- html
- 대덕인재개발원
- 객체지향
Archives
- Today
- Total
romworld
Python 04 - OOP(Object oriented Programming) 객체 지향 프로그래밍 본문
자바를 우선 보자면 , extends로 상속 받는 게 가능하다.
<Animal.java>
package day03;
public class Animal {
int age = 1;
public void liveForAyear() {
age++;
}
}
<OopTest.java>
package day03;
public class OopTest {
public static void main(String[] args) {
Animal ani = new Animal();
System.out.println(ani.age);
ani.liveForAyear();
System.out.println(ani.age);
}
}
** 결과
<Human.java> - Animal을 상속받음
package day03;
public class Human extends Animal {
boolean flag_law = true;
public void makeWar() {
flag_law = false;
}
}
<OopTest.java>
package day03;
public class OopTest {
public static void main(String[] args) {
Human hum = new Human();
System.out.println(hum.age);
System.out.println(hum.flag_law);
hum.liveForAyear();
hum.makeWar();
System.out.println(hum.age);
System.out.println(hum.flag_law);
}
}
*
결과
Python
에서 자바와 똑같이 상속 받아보자!
<ooptest.py>
class Animal:
# 생성자 : __init__
def __init__(self):
self.age = 1
def liveForAyear(self):
# ++ 없으므로 += 해준다.
self.age+=1
# python은 생성할 때 new 생략 가능
ani = Animal()
print(ani.age)
ani.liveForAyear()
print(ani.age)
<ooptest02.py>
from day03.ooptest import Animal
ani = Animal()
print(ani.age)
ani.liveForAyear()
print(ani.age)
python에서 ooptest02를 실행시키는 경우
결과가 1,2,1,2, 두번씩 출력된다.
ooptest도 같이 출력되기 때문이다.
<ooptest.py>
class Animal:
def __init__(self):
self.age = 1
def liveForAyear(self):
# ++ 없으므로 += 해준다.
self.age+=1
def __del__(self):
print("소멸자")
if __name__ == '__main__':
ani = Animal()
print(ani.age)
ani.liveForAyear()
print(ani.age)
<ooptest.py>를 다시 고쳐서
__name__ == '__main__' : name이 main일 경우
출력이므로 이 조건을 주면 ooptest02에서 실행시켜도 두번 출력이 되지 않고
정상적으로 한 번 출력이 된다.
__del__ : 자바와 달리 소멸자가 존재한다. 메서드가 소멸될 때 실행된다.
class Human(Animal):
def __init__(self):
super().__init__()
self.flag_law = True
def makewar(self):
self.flag_law = False
if __name__ == '__main__':
hum = Human()
print(hum.flag_law)
print(hum.age)
hum.makewar()
hum.liveForAyear()
print(hum.flag_law)
print(hum.age)
python에서 상속을 받을 때에는 클래스명 옆에 () 안에 부모클래스명을 써준다.
자바와 다른 점을 상속 받을 때에는
super().__init__()을 써줘야한다. (생략하면 상속받아지지 않음)
다중상속
# 클래스 선언
class Biden:
def __init__(self):
self.idx_handsome = 10
def aging(self):
self.idx_handsome -= 1
class Bill:
def __init__(self):
self.money = 100
def breathe(self):
self.money += 1
class Oh:
def __init__(self):
self.idx_intellingence = 100
def chimae(self):
self.idx_intellingence -= 1
# 다중상속
class Sulah(Biden,Bill,Oh):
def __init__(self):
Biden().__init__()
Bill.__init__(self)
Oh.__init__(self)
# 상속받을 클래스의 생성자를 작성해준다.
if __name__ == '__main__' :
s = Sulah()
print(s.idx_handsome)
print(s.money)
print(s.idx_intellingence)
s.aging()
s.breathe()
s.chimae()
print(s.idx_handsome)
print(s.money)
print(s.idx_intellingence)
'Python' 카테고리의 다른 글
Python 06 - JFrame(2) (JAVA) (0) | 2022.12.27 |
---|---|
Python 05 - JFrame (JAVA) (0) | 2022.12.26 |
Python 03 - 배열 , for문, 메소드 (0) | 2022.12.23 |
Python 02 - eclipse 설치 (전자정부프레임워크) (0) | 2022.12.23 |
Python 01 - 설치 , 변수, 연산자, if문, input, 랜덤, 배열 , for문, 홀짝 (0) | 2022.12.23 |
Comments