본문 바로가기

Java/OOP

(33)
[Java | OOP] 6-36~37. 생성자 this() / 참조 변수 this 📌 학습 목차 36. 생성자 this() 37. 참조 변수 this 36. 생성자 this() 생성자 this(): 생성자에서 다른 생성자를 호출하는 데 사용되는 생성자 •생성자 오버로딩이 많아질 경우, 매개 변수만 달리한 중복 코드가 다수 발생할 수 있음 •같은 클래스 내에 생성자들은 서로 관계가 깊은 경우가 많으므로 유기적으로 연결해 서로 호출 가능한 코드로 작성하는 것이 적절함 즉, 한 생성자에 공통 코드를 작성하고, 나머지 생성자는 this()를 사용해 공통 코드를 가진 생성자를 호출하는 방식으로 개선할 수 있음 •생성자에서 다른 생성자를 호출할 경우, 클래스 이름 대신 생성자 this를 사용해 생성자의 첫 줄에서 호출해야 함 📌 // 1) 생성자 간의 중복 코드가 발생한 경우 class Phon..
[Java | OOP] 6-32~35. 생성자 / 기본 생성자와 매개 변수가 있는 생성자 📌 학습 목차 32. 생성자 33. 기본 생성자 34. 매개 변수가 있는 생성자 35-1. 매개 변수가 있는 생성자 예제 35-2. 매개 변수가 있는 생성자의 호출 과정 32. 생성자 생성자(constructor): 클래스로부터 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드 인스턴스 초기화: 인스턴스 변수들을 초기화하는 것 •생성자는 인스턴스 변수의 묶음과도 같은 객체의 인스턴스 초기화 작업에 주로 사용되며, 객체 생성 시 실행되어야 하는 작업에도 사용됨 •모든 클래스에는 최소 1개 이상의 생성자가 정의되어 있어야 하며, 객체마다 고유한 값으로 다양한 인스턴스 초기화를 하기 위해 오버로딩으로 여러 개의 생성자가 존재할 수 있음 •생성자 이름은 클래스 이름과 같아야 하며, 메서드와 같이 클래스 내에..
[Java | OOP] 6-30~31. 오버로딩 📌 학습 목차 30. 오버로딩 31. 오버로딩 예제 30. 오버로딩 오버로딩(overloading): 한 클래스 내에 메서드 이름은 같으나 매개 변수의 타입, 개수, 순서가 다른 새로운 메서드를 여러 개 선언하는 것(new) 예시) println 메서드의 경우, 매개 변수로 넘겨주는 값의 타입에 따라 오버로딩된 메서드 중 하나가 실행됨 •하나의 메서드 이름에 여러 개의 메서드가 정의되어 있다는 점에서 과적합(overload)을 의미함 •오버로딩의 성립 조건은 메서드 이름이 같을 때 매개 변수의 타입, 개수, 순서 중 하나라도 달라야 하며, 반환 타입은 영향을 미치지 않음 •매개 변수의 순서만 달리해 오버로딩을 구현할 경우 사용자가 매개 변수의 순서를 외울 필요가 없다는 장점이 있지만, 모호한 메서드 호출..
[Java | OOP] 6-26~29. static 메서드와 인스턴스 메서드 📌 학습 목차 26. static 메서드와 인스턴스 메서드 27. static 메서드와 인스턴스 메서드 예제 28. static을 붙이는 경우 29. 메서드 간의 호출과 참조 26. static 메서드와 인스턴스 메서드 인스턴스 멤버(instance member): 인스턴스 변수와 인스턴스 메서드를 통칭함 인스턴스 메서드(instance method): 인스턴스 멤버와 관련된 작업을 하는 메서드 static 메서드(static method): 인스턴스 멤버와 관련 없는 작업을 하는 메서드 / 클래스 메서드(class method)라고도 부름 •인스턴스 메서드와 static 메서드는 메서드 내 인스턴스 멤버의 사용 여부에 따라 구분해도 무방함 •인스턴스 변수는 인스턴스 변수의 묶음과도 같은 객체가 생성되었..
[Java | OOP] 6-25. 참조형 반환 타입 📌 학습 목차 25. 참조형 반환 타입 25. 참조형 반환 타입 •매개 변수뿐만 아니라 메서드의 반환 타입 또한 참조형이 될 수 있으며, 이는 곧 반환값의 타입이 참조형임을 의미함 이때 모든 참조형 타입의 반환값은 '객체 주소'의 정숫값을 의미함 📌 // 반환 타입이 참조형인 메서드의 호출 관계 package chap_06; class Data3 { int x; } class _25_Example { public static void main(String[] args) { Data3 a = new Data3(); a.x = 10; Data3 b = copy(a); System.out.println(a.x + " / " + b.x); // 10 / 10 } static Data3 copy(Data3 a) ..
[Java | OOP] 6-23~24. 기본형 매개 변수 / 참조형 매개 변수 📌 학습 목차 23. 기본형 매개 변수 / 참조형 매개 변수 24-1. 기본형 매개 변수 예제 24-2. 참조형 매개 변수 예제 23. 기본형 매개 변수 / 참조형 매개 변수 자료형(data type): 값(data)의 종류(type)에 따라 저장될 공간의 크기와 저장 형식을 정의한 것 / 크게 기본형과 참조형으로 구분됨 기본형(primitive type): 계산을 위한 실제 값(data)을 저장하는 8개의 자료형 참조형(reference type): 객체 주소(memory address)를 저장하는 기본형 외 나머지 타입 •자바에서는 메서드 호출 시 인수로 지정한 값을 메서드의 매개 변수로 복사해 넘겨줌 이때 메서드의 매개 변수 타입을 기본형으로 선언할 경우, 기본형 값이 복사되어 단순히 값을 읽기만 ..
[Java | OOP] 6-22. 호출 스택 📌 학습 목차 22. 호출 스택 22. 호출 스택 메서드 영역(method area): 클래스 정보와 클래스 변수가 저장되는 공간 스택(stack): 한쪽 끝이 막혀 있는 통과 같은 저장 공간 / 후입선출의 LIFO(Last In First Out) 자료 구조라고도 부름 호출 스택(call stack): 메서드의 작업 공간 / 메서드 작업에 필요한 메모리 공간을 제공함 힙(Heap): new 연산자에 의해 배열과 객체가 생성되는 공간 •JVM(Java Virtual Machine)의 메모리 구조는 메서드 영역, 호출 스택, 힙 영역으로 구분됨 •호출 스택의 특징: 1) 메서드가 호출되면 실행에 필요한 메모리를 스택에 할당받고, 실행이 종료되면 사용했던 메모리를 반환하고 스택에서 제거됨 2) 호출 스택 상..
[Java | OOP] 6-20~21. return문 / 반환값 📌 학습 목차 20. return문 21. 반환값 20. return문 •return문 현재 실행 중인 메서드를 종료하고 호출한 메서드로 되돌아 감 •모든 메서드는 반환값 유무와 관계없이 적어도 하나의 return문을 포함해야 함 •반환 타입이 void인 경우, 컴파일러가 메서드 마지막에 'return;'을 자동으로 추가해주므로 return문을 생략할 수 있음 반면 반환 타입이 void가 아닌 경우(반환값이 있는 경우), 메서드 내에 return문이 반드시 포함되어야 함 •메서드 내에 조건식을 포함한 경우, 조건별 return문이 누락되지 않도록 주의해야 함 class Example { 📌 // 1) 반환 타입이 void인 경우 void method1() { System.out.println("abc")..
[Java | OOP] 6-17~19. 메서드의 호출과 실행 흐름 📌 학습 목차 17. 메서드의 호출 18. 메서드 실행 흐름 19. 메서드 실행 흐름 예제 17. 메서드의 호출 •프로그램 실행 시 OS에 의해 자동으로 호출되는 main 메서드 외, 정의한 메서드는 별도로 호출해야만 구현부 문장들이 실행됨 •메서드 호출 시 지정한 인수는 메서드에 선언된 매개 변수에 대입(복사)됨 이때 인수의 개수와 순서는 매개 변수와 일치해야 하며, 인수와 매개 변수의 타입은 서로 일치하거나 자동 형변환이 가능해야 함 •메서드 내에 모든 문장이 실행되거나 return 문을 만날 경우, 호출한 메서드로 되돌아와 이후 문장들을 실행함 •메서드 작업의 결괏값인 반환값은 변수에 저장해 사용하는 것이 일반적이나, 저장하지 않아도 무방함 18. 메서드의 실행 흐름 / 19. 메서드의 실행 흐름 ..
[Java | OOP] 6-14~16. 메서드 / 메서드의 선언부와 구현부 📌 학습 목차 14. 메서드 15-1. 메서드 선언부 15-2. 메서드 구현부 16. 메서드 예제 14. 메서드 메서드(method): 특정 작업을 실행하기 위해 작업 단위로 문장을 묶은 명령문 집합 •메서드와 함수는 같은 의미이지만, 객체지향 개념에선 클래스에 속한 함수를 메서드로 구분함 •메서드는 선언부(header)와 구현부(body)로 구성되며, 메서드를 정의한다는 것은 클래스 영역 내에 메서드의 선언부와 구현부를 작성하는 것을 의미함 •하나의 메서드는 한 가지 기능(동작)만 실행할 수 있도록 작성하는 것이 적절하며, 작업 단위의 간결한 코드로 묶인 메서드는 코드의 재사용성을 높이고 유지보수가 용이하며 중복 코드를 제거한다는 장점이 있음 15-1. 메서드 선언부 인수(argument): 메서드 작..
[Java | OOP] 6-11~13. 변수의 종류 / 클래스 변수와 인스턴스 변수 📌 학습 목차 11. 변수의 종류 12. 클래스 변수와 인스턴스 변수 13. 클래스 변수와 인스턴스 변수 예제 11. 변수의 종류 / 12. 클래스 변수와 인스턴스 변수 •클래스는 클래스 영역과 클래스 영역 외 영역(메서드, 생성자, 초기화 블럭 내부)으로 구분됨 •클래스 영역은 선언문만 가능하며, 일반적으로 변수를 먼저 선언하나 선언에 따른 순서 제약은 없음 •변수의 종류는 변수가 선언된 위치에 따라 멤버 변수와 지역 변수로 구분됨 이때 멤버 변수는 인스턴스 변수와 클래스 변수로 나뉘며, 멤버 변수를 제외한 나머지 변수들은 모두 지역 변수에 해당함 📌 // 선언 위치에 따른 변수의 종류 class Example { int i1; // 인스턴스 변수 static int i2; // 클래스 변수 void ..
[Java | OOP] 6-9~10. 클래스(데이터와 함수 결합 / 사용자 정의 타입) 📌 학습 목차 9. 클래스(데이터와 함수 결합) 10. 클래스(사용자 정의 타입) 9. 클래스의 정의(데이터와 함수 결합) 변수(variable): 하나의 데이터를 저장할 수 있는 공간 배열(array): 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간 구조체(structure): 서로 관련된 여러 종류의 데이터를 하나의 집합으로 저장할 수 있는 공간 클래스(class): 데이터(구조체)와 함수의 결합 •클래스는 객체지향 이론 관점에선 '객체의 속성과 기능이 정의된 설계도'로, 프로그래밍 관점에선 '데이터와 함수의 결합' 및 '사용자 정의 타입'으로 정의됨 •프로그래밍 언어에서 데이터를 처리하기 위한 저장 형태는 '변수 -> 배열 -> 구조체 -> 클래스' 순으로 발전함 •데이터와 함수는..
[Java | OOP] 6-5~8. 클래스의 작성 / 객체의 생성과 사용 / 객체 배열 📌 학습 목차 5. 클래스의 작성 6. 객체의 생성과 사용 7. 객체의 생성과 사용 예제 8. 객체 배열 5. 클래스의 작성 •클래스 선언은 객체를 생성하기 위한 설계도를 작성하는 작업임 •하나의 소스 파일에 2개 이상의 클래스를 선언할 수 있으나, 소스 파일 당 하나의 클래스만 선언하는 것이 적절함 •public class가 존재할 경우 소스 파일의 이름은 public class 이름과 반드시 일치해야 하며, public class가 없을 경우 소스 파일 내의 어떠한 클래스 이름으로 작성해도 무방함 예시) 'public class Test {}'가 존재할 경우, 소스 파일 이름은 public class 이름과 같은 'Test.java'로 작성해야 함 6. 객체의 생성과 사용 •클래스를 선언한 것은 객체..