00 개요
목록
01 자바 extends 키워드란
02 파이썬 상속이란
03 자바 implements 키워드란
04 파이썬 인터페이스 대체 - abc 추상화 모듈
05 자바와 파이썬 비교
- 자바는 객체 지향 프로그래밍 (Object Oriented Programming) 언어로, 코드 재사용과 확장을 지원하기 위해 다양한 기능을 제공함
- 그중 extends와 implements는 클래스와 인터페이스 간의 관계를 설정하는 중요한 키워드임
- 파이썬의 상속의 개념과 유사
- extends 및 implements 키워드의 정의, 문법, 예시 및 비교에 대한 정리 (두 키워드를 파이썬의 상속 개념과도 비교)
01 자바 extends 키워드란
1. 정의
- 자바에서 한 클래스가 다른 클래스를 상속받을 때 사용됨
- 이를 통해 자식 클래스는 부모 클래스의 속성과 메소드를 물려받아 사용 가능
- 코드의 재사용성을 높임
2. 문법
class ChildClass extends ParentClass {
// ChildClass의 필드와 메소드
}
3. 예시
public class practiseExtendsImplements {
public static void main(String[] args) {
Dog dog = new Dog(); // Dog 클래스의 인스턴스 생성
dog.eat(); // Dog 클래스가 Animal 클래스를 extends를 통해 상속받아서 Animal 클래스의 eat 메소드 호출 가능
dog.bark(); // Dog 클래스의 bark 메소드 호출
}
static class Animal {
void eat() {
System.out.println("Eating...");
}
}
static class Dog extends Animal {
void bark() {
System.out.println("Barking...");
}
}
}
- 실행 결과:
Eating...
Barking...
Process finished with exit code 0
4. 특징
- 단일 상속: 자바는 한 클래스가 오직 하나의 부모 클래스만 가질 수 있음
- 오버라이드 (Override) 가능: 자식 클래스에서 부모 클래스의 메소드를 오버라이드 할 수 있음
02 파이썬 상속이란
1. 정의
- 파이썬에서 클래스는 다른 클래스를 상속받아 속성과 메소드를 재사용 가능
2. 문법
class ParentClass:
def method(self):
pass
class ChildClass(ParentClass):
def child_method(self):
pass
3. 예시
# 첫 번째 부모 클래스
class Animal:
def eat(self):
print("Eating...")
# 두 번째 부모 클래스
class Pet:
def play(self):
print("Playing...")
# 자식 클래스가 두 개의 부모 클래스를 상속받음
class Dog(Animal, Pet):
def bark(self):
print("Barking...")
# Dog 클래스의 인스턴스 생성
dog = Dog()
# 부모 클래스의 메소드 호출
dog.eat()
dog.play()
dog.bark()
- 실행 결과
Eating...
Playing...
Barking...
4. 특징
- 다중 상속 지원: 파이썬은 여러 부모 클래스를 상속받을 수 있음
- 메소드 오버라이드: 자식 클래스에서 부모 클래스의 메소드를 오버라이드 할 수 있음
- 메소드 오버라이드(Override)란: 2024.09.30 - [Python/기본문법] - 메소드 오버라이드 (Method Override)란 (메소드 재정의)
03 자바 implements 키워드란
1. 정의
- 클래스가 하나 이상의 인터페이스를 구현할 때 사용됨
- 인터페이스는 메소드의 시그니처만 정의하고, 구현은 인터페이스를 구현하는 클래스에서 수행함
2. 문법
class ClassName implements InterfaceName {
// InterfaceName의 메소드를 구현
}
3. 예시
public class ImplementsPractise {
public static void main(String[] args) {
Dog dog = new Dog(); // Dog 클래스의 인스턴스 생성
dog.eat(); // Dog 클래스의 eat 메소드 호출
}
interface Animal {
void eat();
}
static class Dog implements Animal {
@Override
public void eat() {
System.out.println("Dog is eating.");
}
}
}
- 실행 결과:
Dog is eating.
Process finished with exit code 0
4. 특징
- 다중 구현: 하나의 클래스가 여러 개의 인터페이스를 구현할 수 있음
- 메소드 구현 필수: 인터페이스의 모든 메소드를 구현해야 하며, 구현하지 않으면 해당 클래스는 추상 클래스 (메소드의 구체적인 구현이 없는 클래스; 참조: 2024.06.28 - [Python] - abc (추상화 클래스) )가 되어야 함
04 파이썬 인터페이스 대체 - abc 추상화 모듈
1. 대체 가능한 파이썬 모듈: abc
- 파이썬에서는 자바의 인터페이스와 동일한 개념이 없지만, 추상 클래스를 사용하여 유사한 기능을 구현 가능
- abc 모듈 사용하여 추상 메소드를 정의 가능
- 참조: 2024.06.28 - [Python] - abc (추상화 클래스)
2. 문법
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def eat(self):
pass
class Dog(Animal):
def eat(self):
print("Dog is eating...")
3. 특징
- 추상 클래스: 추상 클래스를 사용하여 인터페이스처럼 동작할 수 있는 클래스 정의 가능
- 메소드 구현 필수: 자식 클래스에서 추상 메소드를 반드시 구현해야 함 (구현 안 될 시 강제 에러 발생)
05 자바와 파이썬 비교
특성 | 자바 extends | 파이썬 상속 | 자바 implements | 파이썬 추상 클래스 |
상속의 종류 | 단일 상속 | 다중 상속 | 다중 구현 | 추상 클래스 구현 |
접근성 | 부모 클래스의 속성과 메소드 접근 가능 | 부모 클래스의 속성과 메소드 접근 가능 | 인터페이스의 메소드 구현 필요 | 추상 메소드 구현 필수 |
사용 예시 | 클래스를 상속할 때 사용 | 클래스를 상속할 때 사용 | 인터페이스를 구현할 때 사용 | 추상 클래스 정의 시 사용 |
'JAVA' 카테고리의 다른 글
throws (자바 키워드) (0) | 2024.09.30 |
---|---|
ArrayList vs LinkedList (자바 데이터 타입) (0) | 2024.09.30 |
Mybatis (DB 연동 프레임워크) (1) | 2024.09.25 |
로그 레벨 (log4j) (0) | 2024.05.07 |