개발 무지렁이

[Java] 미완성과 추상성 (클래스) 본문

Backend/자바

[Java] 미완성과 추상성 (클래스)

Gaejirang-e 2022. 12. 7. 12:43

미완성 클래스인 제네릭


구매자 사인(타입)이 안 적힌 그림작품(똑같은 구조)이다

❓ 제네릭이 필요한 이유
: 제네릭을 사용하지 않으면 타입별로 거의 유사한 코드를 작성해야 한다.
❓ Object 타입을 사용하면 되지 않을까
-> 🌚 데이터를 넣을 때 (ex. int => Integer => Object로 변질)
-> 🌝 데이터를 뺄 때 (명시적으로 형변환 해줘야 한다.)

추상성에 따른 클래스 구분


- 추상성 0%: 구상클래스
- 추상성 0% ~ 100%: 추상클래스
- 추상성 100%: 인터페이스

인터페이스는 그냥 '추상성 100%'인 '클래스'이다
단, 인터페이스 내에 선언된 메서드를 '반드시 구현'해야한다.
class Main {
    public static void main(String[] args) {
        사람 a사람 = new 홍길동(); // 홍길동 extends 사람
        변호사 a변호사 = (변호사)a사람; // 사람 리모콘은 홍길동 객체와 연결되어 있다.
                                         // 변호사 리모콘에 들어가려면 '홍길동이면 변호사이어야한다'.
                                         // Java에서는 다중상속이 불가함으로 implements를 이용한다
    }
}

class 사람 {}
interface 변호사 {}
class 홍길동 extends 사람 implements 변호사 {} // extends와 implements는 홍길동에게 다형성을 부여하는 수단일 뿐이다.
Comments