객체지향(5)
-
abstract 키워드 - 추상 메서드와 추상 클래스
추상 메서드(Abstract Method) 란 선언부는 있는데 구현부가 없는 메서드를 말한다. 그리고 이 추상 메서드를 하나라도 가지고 있으면 반드시 추상 클래스(Abstarct Class)로 선언해야한다. 먼저 예제 코드를 쭉 읽어보자. 1-2. Driver Class package main; public class Driver { public static void main(String[] args) { Animal[] animals = new Animal[3]; animals[0] = new Cow(); animals[1] = new Mouse(); animals[2] = new Tiger(); for (int i = 0; i < animals.length; i++) { animals[i].cry()..
2022.11.18 -
캡슐화: 정보 은닉
자바에서 정보 은닉이라고 하면 접근 제어자인 private, [default], proteced, public 과 접근자 및 설정자 메서드도 생각날 것이다. 접근 제어자가 객체 멤버( 인스턴스 멤버 ) 와 쓰일 때와 정적 멤버( 클래스 멤버 )와 함께 쓰일 때를 비교해서 살펴보자. 객체 멤버의 접근 제어자 ClassA가 정적 속성인 priSt, defSt, proSt, pubSt를 가지고 있다고 가정해보고 아래표를 작성해 보자. package main01; public class ClassA { private static String priSt; static String defSt; protected static String proSt; public static String pubSt; void runS..
2022.11.15 -
다형성
더보기 여러 관계에서 다형성에 대해 이야기할 수 있지만 그 중 가장 기본은 오버라이딩(Overriding) 과 오버로딩(Overloading)이다. 처음엔 오버라이딩과 오버로딩에 대해서 헷갈릴 수 있는 데 간단하게 단어의 뜻으로 외우면 된다. ride : 올라타다 load : 적재하다 이삿짐을 예를 들면 이삿짐을 트럭에 실는 것을 위에서 아래로 내려다 봤을 때 위로 쌓아올렸을 때 ( = ride) 는 가장 마지막에 올린 짐만 보이지만 나란히 적재 했을 때( = load ) 는 모든 짐이 보인다. 그러면 어떤 것이 오버로딩인지 오버라이딩인지 맞춰보자 ( 클릭하면 정답이 나온다!! ) HTML 삽입 미리보기할 수 없는 소스 이제 오버라이딩과 오버로딩을 구분할 수 있을 것이다. ( 믿어요,, ) 이제 이것을 ..
2022.11.15 -
상속성
위의 예시를 보면 알 수 있듯이 객체 지향에서의 상속은 우리가 일반적으로 알고 있는 상속의 개념이 아니라 상위 클래스의 특성을 하위 클래스에서 상속하고 거기에 더해 필요한 특성을 추가하는 것이다. 즉 확장과 세분화의 개념이다. 따라서 부모 클래스 - 자식 클래스라는 표현보다는 상위 클래스 - 하위 클래스 또는 슈퍼 클래스 - 서브 클래스라는 표현이 맞고 상위 클래스 쪽으로 갈수록 추상화, 일반화 됐다고 말하며, 하위 클래스 쪽으로 갈수록 구체화, 특수화 됐다고 말한다. 상속 관계에서 반드시 만족해야 할 문장이 있다. " 하위 클래스는 상위 클래스이다. " - 로버트 C.마틴의 객체 지향 설계 5원칙 中 LSP( 리스코프 치환 원칙 ) - 예를 들어보자 상속의 잘못된 예인 조직도의 경우 - 아버지는 할아버..
2022.11.14 -
추상화 ( Abstracion )
※ 해당 게시물은 스프링을 위한 자바 객체 지향의 원리와 이해 ( 김종민 지음 ) 을 읽고 요약하여 작성한 것입니다. 추상 ( 抽象 ) [ 명사 ] 심리 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용. 추상-화 抽象畫 [ 명사 ] 미술 사물의 사실적 재현이 아니고 순수한 점ㆍ선ㆍ면ㆍ색채에 의한 표현을 목표로 한 그림. 일반적으로는 대상의 형태를 해체한 입체파 등의 회화도 포함한다. 추상-화 抽象化 [ 명사 ] 추상적인 것으로 됨. 또는 그렇게 만듦. 추상화는 모델링이다. 추상화란 구체적인 것을 분해해서 관심있는 특성만 가지고 재조합하는 것이라고 정리할 수 있다. 객체 지향의 특성은 클래스를 통해 구현된다 또는 객체라고 할 수 있다. 클래스와 객체에 대해 잘 모르겠다면 ..
2022.11.14