김영한의 실전 자바 - 기본편 강의 내용을 정리한 글이다.1. 좋은 객체 지향 프로그래밍이란?객체 지향 프로그래밍(OOP)의 핵심 특징은 네 가지다. 추상화 캡슐화 상속 다형성 이 중 가장 중요한 것이 다형성(Polymorphism)이다. 객체 지향 프로그래밍은 명령어의 목록으로 프로그램을 보는 절차적 시각에서 벗어나, 여러 독립된 단위인 "객체"들의 협력으로 세상을 파악한다. 각 객체는 메시지를 주고받으며 데이터를 처리한다.좋은 객체 지향 설계가 추구하는 것은 유연하고 변경이 용이한 소프트웨어다. 레고 블록을 조립하듯, 키보드나 마우스를 교체하듯, 컴포넌트를 쉽게 바꿀 수 있는 구조가 목표다. 이것이 대규모 소프트웨어 개발에서 OOP가 널리 쓰이는..
김영한의 실전 자바 - 기본편 강의 내용을 정리한 글이다.1. 다형성이 없을 때의 문제다형성의 장점을 이해하려면 다형성 없이 코드를 작성했을 때 어떤 문제가 생기는지를 먼저 봐야 한다. 가장 고전적인 예제인 동물 울음 소리를 통해 살펴보자.Dog, Cat, Caw(소) 세 클래스가 있고, 각자 sound() 메서드를 가진다. 이들 사이에는 아무런 상속 관계가 없다. sound() Dog sound() Cat sound() Caw 세 클래스는 서로 완전히 독립적이다. 이 상태에서 동물 소리 테스트 코드를 작성하면 다음과 같은 중복이 발생한다.System.out.println("동물 소리 테스트 시작");dog.sound();System.out.pr..
김영한의 실전 자바 - 기본편 강의 내용을 정리한 글이다.1. 다형성이란객체지향 프로그래밍의 대표적인 특징으로는 캡슐화, 상속, 다형성이 있다. 그 중에서 다형성은 객체지향 프로그래밍의 꽃이라 불린다.앞서 학습한 캡슐화나 상속은 직관적으로 이해하기 쉽다. 반면에 다형성은 제대로 이해하기도 어렵고, 잘 활용하기는 더 어렵다. 하지만 좋은 개발자가 되기 위해서는 다형성에 대한 이해가 필수다.다형성(Polymorphism)은 이름 그대로 "다양한 형태", "여러 형태"를 뜻한다. 프로그래밍에서 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 뜻한다. 보통 하나의 객체는 하나의 타입으로 고정되어 있다. 그런데 다형성을 사용하면 하나의 객체가 다른 타입으로 사용될 수 있다는 뜻이다.다형성을 이해하기..
김영한의 실전 자바 - 기본편 강의 내용을 정리한 글이다.Java 기본 — 상속1. 상속이 필요한 이유전기차(ElectricCar)와 가솔린차(GasCar)를 각각 별도의 클래스로 만들면 어떤 문제가 생기는지 먼저 살펴본다.public class ElectricCar { public void move() { System.out.println("차를 이동합니다."); } public void charge() { System.out.println("충전합니다."); }}public class GasCar { public void move() { System.out.println("차를 이동합니다."); } public void fil..
김영한의 실전 자바 - 기본편 강의 내용을 정리한 글이다.1. final 변수와 상수1final 키워드는 이름 그대로 끝이라는 뜻이다. 변수에 final 키워드가 붙으면 더는 값을 변경할 수 없다.참고로 final은 class, method를 포함한 여러 곳에 붙일 수 있다. 지금은 변수에 붙는 final 키워드를 알아본다. 나머지는 final의 사용법은 상속을 설명한 이후에 설명한다.final - 지역 변수package final1;public class FinalLocalMain { public static void main(String[] args) { //final 지역 변수1 final int data1; data1 = 10; //최초 한번만 할당 가능..
김영한의 실전 자바 - 기본편 강의 내용을 정리한 글이다.1. 자바 메모리 구조자바의 메모리 구조는 크게 메서드 영역, 스택 영역, 힙 영역 3개로 나눌 수 있다. 메서드 영역 클래스 정보 클래스, 메서드 실행 코드 static 영역 static 변수 보관 상수 풀 "hello", 123 스택 영역 method1() frame data1=x001 main() frame args[] 힙 영역 x001 value=10 Data 인스턴스 힙 --> 자바 메모리 구조 — 메서드 영역 / 스택 영역 / 힙 영역 메서드 영역(Method Area): 프로그램을 실행하는 데 필요한 공통 데이터를 관리한다. ..