프로그래밍/Java (49) 썸네일형 리스트형 19.12.24) Java - abstract class 목차 Abstract class(추상 클래스)란?핵심 추상 클래스는 다형성을 일부 보장하기 위해 사용한다. 마치 빈껍데기 Abstract class(추상 클래스)란? 추상 클래스는 추상 메서드가 있는 클래스를 의미한다. 추상 메서드는 구현부가 정의되어 있지 않은 불완전한 메서드를 의미한다. 그럼 왜 추상 메서드가 필요할까? 다형성을 보장하기 위해서이다. 다형성을 이용하면 부모 객체의 메서드는 실행될 일이 없다. 그렇기 때문에 구현부를 없애고 추상적으로(실제 기능하지 않는) 메서드로 정의해도 된다. 이렇게 하면 장점은 무엇일까? 자식 클래스에게 반드시 재정의를 시킨다. 반드시 재정의를 하면 다형성을 무조건 이용할 수 있다. 하지만 추상 클래스에는 추상 메서드만 있는 것이 아니라 구현 메서드도 존재한다. 그.. 19.12.24) Java - message polymorphism(다형성) 목차 message polymorphism(다형성)이란? 다형성 이론의 전제 조건 다형성 이론의 활용 방법 2가지 핵심 다형성은 부모 클래스를 적절하게 이용하는 것이다. Message polymorphism(다형성)이란? 다형성이란 상속 관계에 있는 클래스에서 부모 클래스가 동일한 메세지로 자식 클래스들을 서로 다르게 동작시키는 원리이다. 같은 메서드를 호출해도 출력되는 결과 값이 달라진다. 객체지향의 핵심이다. 예를 들어, 부모가 3명의 자식에게 꽃을 사오라고 말하면 3명의 자식은 각자 자신의 방법으로 꽃을 사올 것이다. 첫 째는 꽃 배달 업체를 이용한다. 둘 째는 직접 산다. 셋 째는 친구에게 부탁한다. 이처럼 꽃 사오라는 동일한 메세지지만 자식마다 동작이 다르다. 다형성 이론의 전제 조건 상속 관계.. 19.12.24) Java - Object Casting(객체 형 변환) 목차 Object Casting(객체 형 변환)이란? 그럼 상속이 중요한 이유핵심 upCasting을 사용하면 부모 객체로 자식 객체를 자유자재로 활용할 수 있다. Object Casting(객체 형 변환)이란? 객체 형 변환이란 상속 관계에 있는 클래스끼리 자료형을 바꾸는 기능을 말한다. 객체 형 변환에는 upCasting과 downCasting이 있다. upCasting은 자식 객체를 부모 객체로 바꾸는 것을 말한다. 왜 바꿀까? 일전에 말한대로 만약 자식 객체의 기능(메서드)를 사용할 수 없는 상황일 때 부모 객체를 통해 자식 객체의 기능에 접근할 수 있다. (다만, Override가 된 전제 안에서) 그럼 downCasting은 언제 사용할까? 자식 객체의 메서드 중 override가 안된 메서드.. 19.12.23) Java - Override(재정의) 목차 재정의(Override) 상속 관계에서 객체 생성하는 2가지 방법핵심 Override(재정의)는 항상 하위 클래스의 메서드 실행을 도와준다. 상속 개념은 메모리 안에서 어떻게 작동되는 지 이해해야 한다. 재정의(Override) 재정의란 상속 관계에서 하위 클래스가 상위 클래스의 기능(메서드)를 수정하는 것을 말한다. 이 기능이 필요한 이유는 부모의 메서드가 항상 자식에게 필요한 메서드가 될 수는 없기 때문이다. 상속 관계에서 객체 생성하는 2가지 방법 자료형을 하위 클래스로 하는 법Dog d = new Dog(); d.eat(); 위와 같은 코드에서는 인스턴스 변수 d가 가르키는 인스턴스는 Dog지만 메모리가 확장(extends)됐기 때문에 상위 클래스인 Animal 영역까지 가르킨다. 그래서 메.. 19.12.26) Java - Inheritance(상속) 목차 수평적 설계와 수직적 설계 상속 체이닝 상속과 Override의 활용 : TV와 리모콘 부모 클래스에 상태 정보가 있는 경우 핵심 상속은 자식이 부모의 기능을 사용할 수 있다는 의미이다.(물려 받는다는 의미가 아니다. 확장의 의미이다.) Class를 행위 정보 위주로 바라보자. 그 동안 클래스를 바라보는 관점은 다양한 데이터를 담는 자료형으로 살펴봤다. 바구니 역할 즉, 상태 정보에 초점을 맞춘 관점이었다. 하지만 이제는 객체의 행위 정보에 초점을 맞춰서 이야기를 해보자. 먼저 상속에 대해서 알아보자. 수평적 설계와 수직적 설계 클래스는 객체를 설계하는 도구라는 의미는 변함없다. 그 중 설계하는 방법으로 크게 2가지가 있다. 수평적 설계와 수직적 설계인다. 수평적 설계는 각 클래스를 독립적 설계하는.. 19.12.22) Java - Class 정리 목차 Class를 보는 관점 2가지 우리가 만드는 Class의 종류 3가지 우리가 사용하게될 Class의 종류핵심 Class는 무궁무진하다. 내가 어떻게 쓰느냐에 따라 활용 범위가 달라진다 Class를 보는 관점 2가지 지금까지 클래스에 대해서 배웠다. 2가지 관점에서 클래스를 바라봤다. Data type 측면 : 새로운 자료형(객체)를 설계하는 도구 -> 모델링 OPP(객체 지향) 측면 : 객체의 상태 정보와 행위정보를 추출하여 캡슐화 시키는 도구 그래서 클래스를 모델이라고도 한다. 왜냐하면 역할이 정해져있기 때문이다. 우리가 만드는 Class의 종류 3가지 지금까지는 DTO기능을 하는 클래스에 대해서 주로 배웠다. DTO는 객체를 바구니 역할로 사용하는 것이다. 다양한 데이터를 담아서 이동하는 역할이.. 19.12.22) Java - 배열과 객체 목차 배열과 객체(Array vs Object)의 공통점 배열과 객체의 차이점 객체 배열핵심 배열과 객체는 여러개의 데이터를 담는 바구니다 배열과 객체(Array vs Object)의 공통점 배열과 객체의 공통점은 여러 개의 데이터를 담는 자료형이라는 점이다. 바구니 그렇기에 변수에는 값이 아니라 주소가 참조된다. 배열과 객체의 차이점 배열과 객체의 차이점은 담겨진 데이터들이 동일한 자료형인지 아닌지로 나눠진다. 모든 데이터가 동일한 자료형이라면 배열을 사용해야 한다. 이에 반해 데이터가 서로 다른 자료형이라면 객체를 설계해 사용해야 한다. 배열은 자바에서 기본으로 제공하는 자료형이기 때문에 따로 설계할 필요없다. 하지만 객체는 class를 통해 직접 설계를 하고 객체를 생성해야 한다. 내 입 맛대로 만.. 19.12.22) Java - 정보은닉(Information Hiding) 목차 정보 은닉(Information Hiding)은 왜 필요한가? 정보 은닉(Information Hiding)은 어떻게 하는가? 결국 잘못된 값이 들어가는 건 똑같지 않나? 잘 설계된 클래스핵심 정보 은닉은 클래스의 상태 정보를 안전하게 보호하기 위한 기능이다 정보 은닉(Information Hiding)은 왜 필요한가? 정보 은닉은 다른 클래스로부터 접근을 막는 행동이다. 그럼 왜 정보 은닉을 해야할까? 여기서 정보는 객체의 상태정보를 말한다. 정보 은닉을 하지 않으면 객체의 상태정보에 누구나 접근이 가능해진다. 이 의미는 잘못된 데이터가 들어갈 수 있다는 의미다. 잘못된 데이터가 들어가는 것을 막기 위해 정보 은닉을 한다. 예를 들면, 사람의 위는 누구나 접근할 수 있게 개방되어 있지 않다. 뼈와.. 이전 1 2 3 4 5 6 7 다음