Java/문법
Java의 꽃 상속 - Interface
ssury94
2024. 12. 16. 15:36
상속 시리즈
2) Abstract
3) Interface <<
대망의 상속 마지막 키워드 interface에 대해 알아봅시다.
자바클래스 생성시 인터페이스를 선택하여 만들수도 있고,
class 대신 insterface라고 입력하여 사용할 수도 있다.
package entity;
public interface Card {
인터페이스는 클래스 키워드를 사용하지 않는다.
= 인터페이스는 클래스가 아니다!
클래스와 인터페이스는 무슨 차이가 있지?
인터페이스는 일반적인 변수가 올 수 없다. (상수 static는 가능!)
변수 불가
상수 가능!
public static final int CLOVER = 1;
CLOVER의 값이 1로 정해졌기때문에 10으로 변경불가
final: Java에서 변수, 메서드, 또는 클래스에 대한 불변성을 지정
static에 저장되었기때문에 모든 클래스에서 사용가능
상수필드, 구현하지 않은 함수 (=추상 메서드), 디폴트 메서드, statci 메서드, private메서드만 적을 수 있다.
다중 상속 가능한 interface
interface는 extends로는 상속받을 수 없다!
implements로 상속!
package entity;
public class MyCard implements Card{
@Override
public String getCardNumber() {
return "";
}
@Override
public void print() {
}
}
상속 Extend 은 하나만 가능
인터페이스는 여러개 가능, 이를 다중상속 이라 한다.
package entity;
public class MyCard implements Card, Player{}
package entity;
public class MyCard implements Card, Player{
@Override
public String getCardNumber() {
return "";
}
@Override
public void print() {
}
@Override
public void play(String name) {
}
@Override
public void end() {
}
}
정리!
클래스 | 인터페이스 | |
구조와 목적 |
객체의 구조와 행동을 정의합니다. 구체적인 구현을 포함할 수 있습니다. 상태(필드)와 행동(메서드)을 모두 가질 수 있습니다. |
메서드의 선언만을 포함합니다. 구현 객체의 동일한 동작을 보장하기 위해 사용됩니다. 주로 추상 메서드로만 구성됩니다. |
상속과 구현 |
단일 상속만 가능합니다 (extends 키워드 사용). 다른 클래스를 확장하고 기능을 재사용할 수 있습니다. |
다중 구현이 가능합니다. (implements 키워드 사용) 여러 인터페이스를 동시에 구현할 수 있어 유연성이 높습니다. |
사용 목적 |
객체의 설계도 역할을 합니다. 코드 재사용과 확장성을 제공합니다. |
구현 객체 간의 계약을 정의합니다. 다형성을 지원하고 시스템의 결합도를 낮춥니다. (한 모듈을 변경하더라도 다른 모듈에 미치는 영향이 적어 유지보수가 용이해짐) 클래스는 객체의 구체적인 구현을 포함하는 반면, 인터페이스는 구현을 강제하는 추상적인 계약의 역할을 합니다. |
OOP(Object-Oriented Programming)
- 캡슐화 (Encapsulation): 객체의 데이터와 그 데이터를 처리하는 메서드를 하나로 묶어 외부에서 직접 접근할 수 없도록 하는 것입니다. 이를 통해 데이터의 무분별한 변경을 방지하고 객체의 안정성을 높입니다.
- 상속 (Inheritance): 기존의 클래스를 기반으로 새로운 클래스를 생성하는 기능으로, 코드의 재사용성을 높이고 중복된 코드 작성을 줄입니다. 예를 들어, '동물' 클래스에서 '포유류' 또는 '조류' 클래스를 파생시킬 수 있습니다.
- 다형성 (Polymorphism): 같은 이름의 메서드가 서로 다른 형태로 동작할 수 있는 능력입니다. 이는 메서드 오버로딩과 오버라이딩을 통해 구현되며, 유연한 코드 작성을 가능하게 합니다.
- 추상화 (Abstraction): 복잡한 시스템을 단순화하여 필요한 특성만을 강조하는 것입니다. 예를 들어, 자동차 객체를 표현할 때 엔진, 바퀴 등의 주요 특성만을 강조하고 나머지 세부 사항은 생략할 수 있습니다.