김영한의 실전 자바 - 기본편 강의 내용을 정리한 글이다.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): 프로그램을 실행하는 데 필요한 공통 데이터를 관리한다. ..
김영한의 실전 자바 - 기본편 강의 내용을 정리한 글이다.1. 접근 제어자 이해1자바는 public, private 같은 접근 제어자(access modifier)를 제공한다. 접근 제어자를 사용하면 해당 클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한할 수 있다.접근 제어자가 왜 필요한지, 예제를 통해 알아보겠다.스피커에 들어가는 소프트웨어를 개발하는 상황을 생각해보자. 스피커의 음량은 절대로 100을 넘으면 안된다는 요구사항이 있다. 100을 넘어가면 스피커의 부품들이 고장난다.스피커 객체를 만들어보자. 스피커는 음량을 높이고, 내리고, 현재 음량을 확인할 수 있는 단순한 기능을 제공한다. 요구사항대로 스피커의 음량은 100까지만 증가할 수 있다. 절대 100을 넘어가면 안된다.S..
김영한의 실전 자바 - 기본편 강의 내용을 정리한 글이다.1. 패키지 - 시작쇼핑몰 시스템을 개발한다고 가정해보자. 프로그램이 매우 작고 단순해서 클래스가 몇 개 없다면 크게 고민할 거리가 없다. 하지만 기능이 점점 추가되어서 프로그램이 아주 커지게 된다면 어떻게 될까?아주 작은 프로그램OrderUserProduct큰 프로그램UserUserManagerUserHistoryProductProductCatalogProductImageOrderOrderServiceOrderHistoryShoppingCartCartItemPaymentPaymentHistoryShipmentShipmentTracker매우 많은 클래스가 등장하면서 관련 있는 기능들을 분류해서 관리하고 싶어진다. 컴퓨터는 보통 파일을 분류하기 위해..
김영한의 실전 자바 - 기본편 강의 내용을 정리한 글이다.1. 생성자 - 필요한 이유객체를 생성하는 시점에 어떤 작업을 하고 싶다면 생성자(Constructor)를 이용하면 된다. 생성자를 알아보기 전에 먼저 생성자가 왜 필요한지 코드로 간단히 알아본다.MemberInitpackage construct;public class MemberInit { String name; int age; int grade;}MethodInitMain1package construct;public class MethodInitMain1 { public static void main(String[] args) { MemberInit member1 = new MemberInit(); ..