추상이란 ? (abstract)

: 구체성이 없어서 분명하지 않은 것. (한 번 더 되묻게 되고 포괄적이고 넓은 개념.)

Ex) 자동차 ? 애완동물 ? → 어떤 브랜드에 어떤 종류의 차 ? 어떤 애완동물 종류 ?

자동차, 애완동물은 추상적이며 공통적인 포괄적인 내용을 담아서 사용.

추상 클래스

애완동물 (부모, 추상 클래스) - 강아지, 고양이, 앵무새 등 (부모를 extends 상속 받는 자식 클래스)

애완동물 (부모, 추상 클래스) 에 공통된 필드와 메서드를 다 작성해두면

애완동물 부모 클래스를 상속 받는 강아지, 고양이 자식 클래스에서 @Override하여 부모 클래스에 있는 추상 메서드를 사용할 수 있다.

추상 메서드

Ex) eat() → 밥 먹는 기능을 다 eat() 메서드로 추상화시킨 것 = 추상 메서드

추상 클래스에서 생성된 추상 메서드는 껍데기 역할이라 구체적인 기능을 작성할 필요 없다. 자식이 오버라이딩(@Override)하여 구체화하여 사용한다.

Pet dog = new Dog(); // 데이터 타입은 부모 클래스 사용, 객체 생성은 구체화된 클래스를 사용

+부모 클래스 추상화 시키기 (abstract 사용시)

: abstract 을 써서 부모와 자식 역할을 명확히 나눠주고 필수 기능을 강요할 필요가 있을 시 추상화.