객체 지향의 4대 특성
- 캡슐화 : 정보 은닉
- 상속 : 재사용
- 추상화 : 모델링
- 다형성 : 사용 편의
사람 최명재 = new 사람(); // 사람이라는 class의 객체 최명재 생성 == 클래스의 인스턴스
추상화
- 구체적인 것을 분해해서 관심 영역에 있는 특성만 가지고 재조합
- Ex)병원 환자 클래스 모델링 -> 직업, 연봉 속성 필요X
- 객체 지향에서 추상화의 결과는 클래스다.
- 자바는 class 키워드를 통해 추상화를 지원한다.
static
- static 키워드 O = 클래스 멤버 속성 = 정적 멤버
- static 키워드 X = 객체 멤버 속성 = 인스턴스 멤버
@SpringBootApplication
public class BoardApplication {
public static void main(String[] args) {
SpringApplication.run(BoardApplication.class, args);
}
}
이때 main() 메서드는 static이다. Why? -> T 메모리가 초기화된 순간 객체는 하나도 존재하지 않기 때문에 바로 실행X
->이를 해결하기 위해 정적 멤버로 사용하여 JVM 구동 시 T 메모리의 스태틱 영역에 바로 배치
상속
- 하위 클래스는 상위 클래스다.
- Ex) 조류는 동물이다. , 고래는 포유류이다.
- 상위 클래스의 특성을 재사용하는 것
- 상위 클래스의 특성을 확장하는 것
- 하위 클래스 is a kind of 상위 클래스
인터페이스
- 구현 클래스 is able to 인터페이스
- 구현 클래스는 인터페이스할 수 있다.
- Ex) 조류는 날 수 있다.
- Serizlizable 인터페이스 : 직렬화할 수 있는
- 클래스가 무엇을 할 수 있다 라고 하는 기능을 구현하도록 강제함
상위 클래스는 물려줄 특성이 풍성할수록 좋고, 인터페이스 메서드의 개수가 적을 수록 좋다