다형성이란?다형성이란 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미한다. 즉, 부모 클래스 타입의 참조 변수로 자식 클래스의 객체를 참조할 수 있도록 허용하여 부모 클래스의 동일한 메시지로 자식 클래스들이 서로 다른 동작을 할 수 있도록 한다. 다형성의 장점재사용성 (Reusability)상속관계에 있는 클래스들은 공통된 부분을 부모 클래스에 정의하고, 자식 클래스에서는 부모 클래스를 확장하여 필요한 추가 기능 구현이 가능하다. 따라서 불필요한 코드를 줄이고 재사용성을 높일 수 있다.유연성 및 확장성 (Flexibility & Scalability)프로그램 내에서 객체의 타입을 쉽게 변경할 수 있기 때문에, 코드를 수정하지 않고도 새로운 클래스 타입의 객체를 쉽게 추가하거나 변경할 수 있다. 따..
오버로딩(Overloading)이란 ? Overloding 의 사전적 의미는 '과적하다' 이다. 메서드도 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 한다. 그러나 자바에서는 한 클래스 내에 이미 사용하려는 이름에 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있는 아주 재미있는 기능을 제공한다. 오버로딩의 조건 메서드 이름이 같아야 하고, 매개변수의 개수 또는 타입이 달라야 한다 ! //[ex01] int add(int a, int b) return a + b; int add(int x, int y) return x + y; //[ex02] int add(int a, int b) return a + b; long add(int a, i..
생성자(Constructor)는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드' 이다. 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용된다. 생성자 역시 메서드처럼 클래스 내에 선언되며, 구조도 메서드와 유사하지만 리턴값이 없다는 점이 다르다. 그렇다고 해서 생성자 앞에 리턴값이 없음을 뜻하는 키워드 void를 사용하지 않는다. 이유는 모든 생성자가 리턴값이 없기 때문에 생략가능하게 만들어 둔 것 ! 기본 생성자(default constructor) Class를 활용하기 전까지 나는 생성자를 모르고 프로그래밍 해왔지만 사실 모든 클래스에는 반드시 하나 이상의 생성자가 정의되어 있어야 한다. 내가 생성자를 정의하지 않고도 인스턴스를 생성할 수 ..
Java 에서 Class를 공부하다보면 접근 제어자(Access Modifiers)에 자연스럽게 관심이 가게 되고, 이것을 정확하게 인지하지 못하면 다음 진도로 넘어가도 헷갈리기 시작한다. Java에는 네가지 종류의 접근제어자가 있고 그 중 , private 접근 제어자는 클래스의 필드(변수)를 직접적으로 외부에서 접근할 수 없게 함으로써 데이터를 보호한다. 이러한 필드에 대한 안전한 접근을 제공하기 위해 일반적으로 Setter 와 Getter 메소드를 사용한다. Getter Getter 메소드는 클래스의 필드값을 읽기 위한 메소드이다. 이 메소드는 보통 public으로 선언되어, 외부에서 해당 필드의 값을 조회할 수 있도록 한다. Getter 메소드는 보통 필드 이름 앞에 get을 붙여서 이름을 지정한..
Java 에서 접근 제어자(Access Modifiers)는 클래스, 변수, 메소드 및 생성자에 대한 접근을 제한하는데 사용된다. 접근 제어자는 객체 지향 프로그래밍의 캡슐화(encapsulation) 원칙을 지원하며, 데이터를 보호하고, 외부에서의 불필요한 접근을 제한한다. 쉽게 말하자면 유명한 맛집의 비법은 아무나 알 수 없게 하기 위함과 같다고 생각하면 된다. Java 에서는 아래의 네 가지의 접근 제어자를 사용한다. 1. Private 해당 멤버(변수, 메소드)를 선언한 클래스 내에서만 접근이 가능하다. 클래스 외부에서는 접근할 수 없으므로, 가장 제한적인 접근 수준을 제공한다. 주로 내부 작업을 위한 메소드나 변수에 사용된다. 2. Default (package - private) class 생..
JVM? JVM(Java Virtual Machine)은 OS의 메모리 영역에 접근하여 Java의 메모리를 관리하는 가상의 프로그램을 의미한다. C 또는 C++로 개발할 때는 사용자가 직접 메모리를 관리해주어야 한다. C 에서는 calloc, realloc, malloc 같은 것으로 메모리를 할당하여 쓰고난뒤 free로 해제를 직접 해줘야 하고, C++ 에서는 생성자와 소멸자를 이용하여 메모리를 관리해야 한다. 하지만 Java에서는 JVM이 Stack과 Heap이라는 메모리 관리하여 객체들을 할당하고 해제하며, GC(Garbage Collection)을 통해 사용하지 않는 객체들은 자동으로 해제하여 메모리를 관리한다. Stack & Heap 1. 스택(Stack) Stack은 정적으로 할당된 메모리(St..
삼항 연산자 삼항 연산자는 Java에서 3개의 피연산자를 받는 유일한 연산자이다. if 조건문을 짧게 표현할 수 있는 장점이 있지만, 축약된 형식이기 때문에 가독성을 해치기도 한다. 특히 한 줄에 조건식과 결괏값들이 모두 모여있으므로 디버거로 줄단위 디버깅을 할 때 불편하다. 게다가 삼항 연산자를 사용하여 코드의 라인이 줄어들었다고 컴파일 속도가 빨라지는것도 아니다. 따라서 가독성을 해치지 않으면서 코드가 간결해지는 경우에만 삼항 연산자를 사용해야한다. if-else 문을 사용한 경우 int Val = 10; if (Val