자바의 객체 지향 프로그래밍 객체 지향 프로그래밍 자바는 클래스(class)와 객체(object)로 이루어져 있습니다. 소프트웨어를 개발할 때, 부품에 해당하는 객체들을 먼저 생성하고, 이 객체들을 하나씩 조립하여 프로그램을 완성시키는 방법을 객체 지향 프로그래밍이라고 말합니다. 자바에서 프로그래밍도 대표적인 객체 지향 프로그래밍에 속합니다. 객체 지향 프로그래밍은 쉽게 말해 프로그래밍을 명령어의 모음이라고 보는 시각에서 벗어나 실제 객체들의 모음이라고 보는 시각의 프로그래밍이라고 이해하면 편합니다.     객체란 무엇일까?먼저 객체란, 물리적이거나 개념적으로 존재하는 것 중에서, 다른 것들과 구별이 가능한 것을 말합니다. 예를 들자면, 물리적으로 존재하는 것들은 책, 사람, 화장품, 시계, 지갑 등을 뜻하며, 개념적인 것들은 주문..
자바의 상속(inheritance) 자바의 상속 실제 상속은 부모가 자식에게 재산을 물려주는 행위를 말합니다. 자바에서의 상속의 개념은 기존 클래스의 필드와 메서드를 새로운 클래스에서 재사용하게 해 줍니다. 이름 그대로 기존 클래스의 속성과 기능을 그대로 물려받을 수 있습니다. 먼저 상속 관련 용어에 대해서 알아보도록 하겠습니다. 부모 클래스(슈퍼 클래스) : 상속을 통해서 자신의 필드와 메서드를 다른 클래스에게 제공하는 클래스를 의미합니다. 자식 클래스(서브 클래스) : 부모 클래스(슈퍼 클래스)로부터 필드와 메서드를 상속받는 클래스를 의미합니다. 상속을 통해, 기존에 존재하는 잘 개발된 클래스를 재사용해서 새로운 클래스를 생성하고 몇 가지 기능들만 추가할 수 있고, 부모 클래스를 수정하게 되면 상속 관계에 있는 자식 클래스들도 수정되어..
썸네일 자바의 배열(array) 자바의 배열 배열은 같은 유형의 변수들을 사용하기 편하도록 하나로 묶은 것을 말합니다. 배열은 힙(Heap)영역에 생성되면 배열의 변수는 스택(Stack)영역에 저장되어 해당 배열의 참조값을 가지고 있게 됩니다. 배열을 사용하는 이유 먼저 배열을 사용하는 이유에 대해서 알아봅시다. 변수는 하나의 값만 저장할 수 있습니다. 만약 저장 하고 싶은 데이터의 수가 적으면 상관이 없겠지만, 수가 굉장히 많아지면 그 수만큼 비례한 변수가 필요하게 됩니다. 따라서 코드의 양이 굉장히 많아지게 되는 문제점이 발생하게 됩니다. 예를 들어, 학생 20명의 데이터를 저장하고 싶다고 한다면, 먼저 20개의 변수를 선언해서 코드를 입력해야 합니다. int student1Score = 90; int student2Score = ..
자바의 final Final 필드와 상수 인스턴스 필드와 static필드는 언제든지 값을 변경할 수 있지만, 경우에 따라서 값을 변경하게 하지 않고 값을 읽는 것까지만 허용해야 할 때가 있습니다. 이러한 경우에 final키워드를 사용해서 final 필드와 상수를 선언해서 사용합니다. Final 지역 변수 선언 final변수는 초기값이 저장되면 해당 값이 최종값이 되어서 프로그램 도중에 수정이 불가능하게 됩니다. 선언 방식은 다음과 같습니다. final int finalValue = 1; // 자료형과 초기값은 다양하게 설정이 가능함 지역 변수에 final키워드를 사용하게 되면 변수 초기화 시 설정한 값 한 번만 설정할 수 있습니다. 이후에 값을 변경하려고 시도하면 컴파일 오류가 발생합니다. public static voi..
자바의 생성자(constructor) 자바의 생성자란? 객체 생성 직후에 객체의 데이터들을 초기화하는 기능을 가지고 있는 메서드입니다. 생성자는 자바에서 객체 생성 시에 반드시 필요합니다. 생성자가 왜 필요한 것일까? 자바 프로그래밍을 하다 보면 객체를 생성하고 난 뒤에 곧바로 초기화를 통해 초기값을 지정해 주어야 하는 경우가 많습니다. 그래서 자바에서는 객체를 생성하고 나서 즉시 초기화를 진행하거나 특정 기능들을 수행하도록 하는 기능을 가진 메서드인 생성자를 제공합니다. 아래의 코드를 비교하면서 생성자를 정의하고 객체를 작성자가 직접 정의하는 것과 정의하지 않고 자동으로 작성되는 기본 생성자의 차이를 알아봅시다. package construction; public class Person { public String name; public ..
자바의 패키지(package) 자바의 패키지 컴퓨터의 파일들을 분류하기 위해서 폴더라는 기능이 존재하듯이, 자바도 이런 디렉터리 기능을 제공합니다. 그것을 패키지(Package)라고 합니다. 자바에서 패키지는 단순 디렉터리만을 의미하지 않습니다. 패키지는 클래스의 일부분으로 구분되고, 클래스를 식별하는 용도로 사용됩니다. 패키지 사용법 언제나 클래스는 패키지를 만들고 그 안에 클래스를 생성해야 합니다. 코드로 확인해 보겠습니다. package pack; public class UsePackage { public static void main(String[] args) { User user = new User(); } } 패키지 안에서 클래스를 생성하여 활용할 때 언제나 자바 소스 파일 최상단에 package + 패지키명과 같이 패키지..
자바의 기본형과 참조형 자바의 기본형과 참조형 자바에서 변수의 데이터 타입을 크게 기본형과 참조형 두 가지로 분류가 가능합니다. 값을 변수에 직접 넣을 수 있는 기본형, 그리고 객체가 저장된 메모리의 참조값 혹은 주솟값을 저장하는 참조형으로 분류됩니다. 기본형(Primitive Type) : int, long, double, boolean과 같이 변수에 데이터를 직접 넣을 수 있는 데이터 타입을 의미합니다. 참조형(Reference Type) : Scanner scanner, String str과 같이 데이터에 접근하기 위한 메모리의 참조값을 저장하는 데이터 타입을 참조형이라고 합니다. 따라서 기본형 변수끼리는 연산이나 비교, 혹은 사용이 바로 가능하지만 참조형은 그렇지 않습니다. 예외적으로 String 참조형은 자바에서 사용..
자바의 클래스(Class) 자바의 객체와 클래스 객체를 생성하기 위해서는 설계도가 필요합니다. 자바에서는 클래스는 객체를 생성하기 위한 설계도이고, 객체는 설계도로 만들어진 결과물이라고 생각하시면 됩니다. 흔히 객체 지향 프로그래밍을 설명할 때, 붕어빵 비유를 자주 사용하곤 하는데 클래스를 붕어빵 틀, 객체를 붕어빵 틀로 인해서 만들어진 붕어빵이라고 비유하곤 합니다. 이때 클래스를 실행하게 되면 객체를 생성하게 되고, 이를 인스턴스(instance)라고 부릅니다. 클래스로 여러 개의 인스턴스들을 생성할 수 있는데, 이는 동일한 설계도를 통해 각각 다른 제품들 생산해 내는 것과 같은 개념이라고 보시면 됩니다. 클래스 선언 클래스 선언은 객체 생성을 하기 위한 설계도를 작성하는 작업입니다. 어떻게 객체를 생성할지, 객체가 가지고 있는..
자바의 메서드(Method) 메서드 자바에서는 함수를 메서드라고 합니다. 정확히는 함수 중의 한 종류라고 보면 됩니다. 수학에서의 함수는 무슨 기능을 하나요? 간단하게 생각하면, 어떠한 값을 함수에 대입하면 또 다른 값을 반환하는 것을 함수라고 합니다. 프로그래밍에서도 마찬가지로, 어떠한 함수를 생성해 두고 필요시마다 호출하여 사용이 가능합니다. 위에서 말했듯 이러한 함수를 자바에서는 메서드라 칭하고, 메서드들을 호출할 때는 다음과 같은 형태로 호출합니다. 메소드(매개값1, 매개값2, ...); 원하는 기능을 가진 메서드명을 작성한 후, 이름과 함께 전달하고자 하는 데이터를 메서드명 옆에 있는 괄호 안에 입력합니다. 이 데이터들을 매개값 또는 인자, 영어로는 argument라고 합니다. 이때 메서드부터 호출한 곳을 다시 돌려받는 값..
자바의 조건문과 반복문 자바의 제어문 자바는 중괄호의 시작과 끝으로부터 차례대로 실행되는 코드의 흐름을 가지고 있습니다. 이 실행의 흐름을 개발자의 의도대로 변경할 수 있도록 하는 것을 제어문이라고 합니다. 제어문의 종류는 크게 두 가지로, 조건문과 반복문으로 구성되어 있습니다. 조건식의 논리 값에 따라서 이후 이어지는 중괄호로 이루어진 블록 내부의 코드를 실행할지의 여부가 결정됩니다. 제어문의 종류는 다음과 같이 분류할 수 있습니다. 조건문 반복문 if 문, switch문 for 문, while 문,do-while 문 위 두가지 제어문은 코드 블록이 실행되었을 때 다시 제어문이 실행되는 시점으로 돌아갈지, 아니면 정상적인 흐름을 계속 진행할지의 차이점을 가지고 있습니다. 조건문일 경우 정상 흐름대로 실행되지만 반복문일 경우 ..
자바 연산자에 대해 자바의 연산자 자바에서 연산을 수행하는 기호를 연산자(operator)라고 칭합니다. 연산자의 종류 산술 연산자 : +, -, *, /, % 증감 연산자 : ++, -- 비교 연산자 : ==, !=, >, =, , =, b); // a 값이 b 값보다 큰지 비교. 값이 작으므로 false값 출력 System.out.println(a = b); // a 값이 b 값보다 크거나 같은지 비교. 값이 작으므로 false값 출력 논리 연산자 논리 연산자도 비교 연산자와 마찬가지로 boolean값을 산출해 내기 위해서 사용합니다. 구분 연산식 결과 설명 AND true && 또는 & 사용 true true 비교하는 피연산자가 모두 true일 때 true 산출 true false false false true fal..
자바의 변수와 타입 자바에서 변수 선언하기 컴퓨터의 메모리(RAM)는 수많은 주소로 이루어진 데이터 저장 공간입니다. 프로그램은 속도가 빠른 메모리를 통해 데이터 작업이 이루어집니다. 이때 데이터를 어디에 어떤 방식으로 저장할지 정의해 주지 않았다면 데이터관리에 있어서 어려움을 겪게 될 것입니다. 프로그래밍 언어에서는 이러한 문제들을 해결하기 위해서 변수 선언이라는 방식을 사용하고 있습니다. 변수(Variable)는 하나의 값을 저장할 수 있는 메모리 주소에 붙여진 이름입니다. 따라서, 변수는 다음과 같이 정의할 수 있습니다. 변수 = 값을 저장할 수 있는 메모리 주소에 붙여진 이름 자바에서 변수는 선언 과정에서 자료형을 통해 어떠한 데이터를 저장할 것인지, 변수 이름이 무엇인지를 설정합니다. 선언 방법은 다음과 같습니다...