카테고리 없음

2024. 7. 5. (금) 슈퍼코딩 부트캠프 Day 29 / 주특기 2주차

태영9922 2024. 7. 5. 16:20

 

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 계약서 = 객체 역할

출처 :  https://velog.io/@mini_mouse_/%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4%EC%99%80-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

 

- 추상클래스와 인터페이스 비교

출처 :  https://m.blog.naver.com/snoopy12oyk/220783834466