본문 바로가기

전체 글

(203)
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)은 왜 필요한가? 정보 은닉은 다른 클래스로부터 접근을 막는 행동이다. 그럼 왜 정보 은닉을 해야할까? 여기서 정보는 객체의 상태정보를 말한다. 정보 은닉을 하지 않으면 객체의 상태정보에 누구나 접근이 가능해진다. 이 의미는 잘못된 데이터가 들어갈 수 있다는 의미다. 잘못된 데이터가 들어가는 것을 막기 위해 정보 은닉을 한다. 예를 들면, 사람의 위는 누구나 접근할 수 있게 개방되어 있지 않다. 뼈와..
19.12.22) Java - private constructor 목차 객체를 생성하지 않고 메서드를 사용하는 법 인스턴스 메서드와 클래스 메서드 핵심 private 생성자 메서드를 사용하려면 모든 메서드에 static 키워드가 있어야한다. 객체를 생성하지 않고 메서드를 사용하는 법 생성자는 public과 private 둘 다 사용 가능하다. public 키워드가 있으면 다른 클래스에서 객체를 생성할 수 있다. 하지만 private이면 객체 생성을 할 수 없다. 왜냐면 생성자에 접근할 수 없기 때문이다. 그러면 private 생성자가 있는 객체의 메서드를 사용하려면 어떻게 해야할까? 이 말은 객체를 생성하지 않고 메서드를 어떻게 사용할까?와 같은 말이다. 인스턴스 메서드와 클래스 메서드 메서드는 인스턴스 메서드와 클래스 메서드로 나눠진다. 둘의 차이는 static이 있..
19.12.22) Java - 메서드 오버로딩(Method Overloading) 목차 메서드 오버로딩(Method Overloading)이란? 이름이 같으면 어떤 함수인지 찾는데 속도가 느리지 않을까?핵심 메서드 오버로딩은 메서드의 이름이 같지만 매개변수의 타입과 개수를 다르게 하는 기능이다. 메서드 오버로딩(Method Overloading)이란? 메서드 오버로딩은 메서드의 이름이 같지만 매개변수의 타입과 개수를 다르게 하는 기능이다. 매개변수의 타입과 개수를 Signature라고 한다. 즉, 이름이 같더라도 매개변수의 Signature가 다르다면 에러가 발생하지 않는다. 그럼 왜 사용할까? 당연히 편리하기 때문이다. 덧셈 기능을 하는 메서드가 있다. 그런데 매개변수의 타입과 개수가 다르다고 메서드의 이름을 다 다르게 하면 생산성이 떨어진다. 그래서 같은 이름을 쓰되, 매개변수의 ..
19.12.22) Java - class, object, instance의 차이 목차 Class Object Instance 그럼 객체가 왜 필요할까?핵심 Class: 객체를 설계하는 도구 Object: 선언된 객체 변수 Instance: 생성되고 값이 있는 객체 객체를 만드는 이유는 다양한 자료형을 한 번에 이동하기 위함이다. Class Java를** 배우면 자주 등장하는 용어가 있다. Class, Object, Instance이다. 이 용어들이 객체와 관련되어 있다는 건 알겠는데, 정확하게 어떤 차이가 있는지 모르는 경우가 있다. 한번 알아보자. 먼저 Class다. Class는 객체를 설계하는 도구이다. 내가 Book이라는 객체를 만드려고 할 때 먼저 BooK이라는 객체의 속성을 설계해야 한다. 아래 코드처럼 public class Book { public String title..