1.추상화란?
- 클래스들의 공통 속성, 행위를 정의하여 코드의 중복을 줄이고 다형성을 실현.
2. 추상클래스 활용
- 실재하지 않지만, 하위의 공통적인 속성, 행위를 기준으로 정의한 개념
- 추상클래스는 인스턴스화 할 수 없음
public abstract class Animal {
public abstract void eat(String food);
public abstract void sleep();
//추상 메소드는 구현할 수 없음. 하위클래스에서 무조건 오버라이드 필요
}
...
public class Bird extends Animal {
@Override //추상클래스 메소드 구현
public void eat(String food) {
System.out.println("새가 " + food + "를 부리로 쪼아먹고 있습니다");
}
@Override //추상클래스 메소드 구현
public void sleep() {
System.out.println("새가 잠을 자고 있습니다");
}
public void fly() { //하위 클래스에서 새로운 메소드 구현
System.out.println("새가 날고 있습니다");
}
}
1. 인터페이스란?
- 인간과 사물, 사물과 사물, 시스템간에 커뮤니케이션이 가능하도록 설계한 상호 작용 방식
- 유저 인터페이스 / 시스템 인터페이스
2. Java OOP 인터페이스
- 자바 객체간 커뮤니케이션이 가능하도록 기능구현을 설계하는 추상화 문법
- 공통된 행위만 보는 추상화
- 인터페이스도 인스턴스화 불가, 메소드 오버라이드 구현의무 부여.
public interface Flyable{
long Boundary = 457; //자동으로 static final이 추가됨.
...
void fly(); // 자동으로 public abstract가 추가됨. 하위클래스에서 오버라이드 필요
default void fly2(){ //default로 구현 가능
System.out.println("defalut 메소드");
}
}
...
public class Airplane implements Flyable{
@Override
public void fly(){
...
}
}
- 인터페이스 디폴트 메소드
1. 인터페이스 활용
- 인터페이스 = Java 계약서 = 객체 역할
- 추상클래스와 인터페이스 비교