자바 = 객체 지향 언어
추상화란?
객체들의 공통적인 특징(속성, 기능)을 뽑아 이름을 붙이는 것이라고 생각하면 됩니다.
클래스 : 분류에 대한 개념 > 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념입니다. Ex) 사람
객체 : 실체 > 유일무이한 사물 입니다. Ex) 대림대학교 컴퓨터정보학부 김광현
그 이유는 간단합니다.
구체적인 것을 분해해서 관심 영역 (애플리케이션 경계) 에 있는 특성만을 가지고
재조합하는 행위가 마치 모델링과 비슷하기에 붙여진 별명입니다.
상속화란? 또한 어째서 재사용일까?
상위 개념의 특징을 하위 개념이 물려받는 것 입니다.
ㆍ하위 클래스 - 상위 클래스
ㆍ하위 클래스는 상위 클래스의 특성을 재사용하고, 확장합니다.
ㆍ상위 클래스의 물려줄 특성이 많으면 많을수록 좋습니다. (LSP)
ㆍ인터페이스
ㆍ다중 상속 대신에 도입한 기술입니다.
ㆍ어떤 객체가 해야할 일을 정의하는 추상 자료형 입니다.
ㆍbe able to = 구현이 가능한 기능을 넣기에 인터페이스 네이밍을 ~able로 하는경우가 많습니다.
ㆍ인터페이스는 구현을 강제할 메서드가 적으면 적을수록 좋습니다. (ISP)
다형성이란?
어떤 변수, 메소드가 상황에 따라 제각각 다른 결과값을 내는 것을 뜻합니다.
사용 편의 인 이유는?
다형성을 극대화 하기 위해 추상클래스나 인터페이스를 이용하는것이 핵심입니다.
ㆍ오버라이딩
ㆍ같은 메서드의 이름 / 같은 인자 목록 / 상위 클래스의 메서드를 재정의 하는 행위입니다.
ㆍ상위 클래스 타입의 객체 참조 변수에서 자동으로 하위 클래스가 오버라이딩한 메소드를 호출해 줍니다.
ㆍ오버로딩
ㆍ같은 메서드의 이름 / 같은 인자 목록 / 다수의 메서드를 중복 정의하는 행위입니다.
캡슐화란?
특정 객체가 독립적으로 역할을 제대로 수행하기 위해 필요한 데이터와 기능을 하나로 묶은 것을 뜻합니다. (모듈화와 동의)
어떤 점이 정보 은닉일까?
정보를 객체 안에 포함시킨후, 그 정보에 대한 직접 접근은 허용하지 않는 대신,
필요에 따라 확인할 수 있는 인터페이스를 외부에 공개하는 방식입니다.
ㆍ접근 제어자
ㆍpublic : 클래스 외부에서도 접근이 가능함
ㆍprivate : 클래스 내부에서만 접근이 가능함
ㆍprotected : 상속받은 자식 클래스에서만 접근 가능함
ㆍdefault : 같은 패키지 내 클래스에서 접근이 가능함
책에 아주 좋은 이미지가 하나 있어 긁어왔습니다.
느낀점 알게된점
전 포스트와 비슷한 후기이지만, 앞으로 객체 지향언어를 많이 다룰 예정인 저에게 아주 뜻깊은 챕터이지 않았나 싶습니다.
몇몇 알고 있는 지식들도 있어 복습도 되었습니다.
해당 내용은 스프링 입문을 위한 자바 객체 지향의 원리와 이해를 참고하여 작성되었습니다.