본문 바로가기

Java/Java Language

(37)
[Java] Modifier (Access Modifier와 Encapsulation) Modifier란?제어자(modifier)는 크게 접근 제어자와 그 외의 제어자로 나뉜다. 제어자는 클래스, 변수, 메서드의 선언부에 사용되어, 대상의 기능을 제어한다. 하나의 대상에 여러 제어자를 사용할 수도 있다. 접근 제어자에는 public, protected, default, private가 있으며, 그 외의 제어자는 static, final, abstract, native, transient, synchronized 등이 있다.접근 제어자 (Access Modifier)접근 제어자의 종류와 역할접근 제어자(access modifier)는 멤버변수, 클래스, 메서드, 생성자에 사용되어, 적용된 대상에 접근을 제어하는 역할을 한다.접근제어자에는 다음과 같은 종류가 있다.private: 같은 클래스 ..
[Java] Package와 Import Package란?패키지(Package)는 서로 관련된 여러 클래스와 인터페이스를 묶은 그룹이다. 클래스는 패키지 하위에 저장되고, 실제 클래스명은 패키지명까지 포함한 것이다. 예시로, String 클래스는 java.lang 패키지에 속하며, 실제 이름은 java.lang.String이다. Package와 File SystemJava는 파일 시스템의 디렉토리와 파일을 사용하여 패키지와 클래스 및 인터페이스를 조직화하고 관리한다. 패키지는 디렉토리와 맵핑되고 클래스와 인터페이스는 파일과 맵핑된다. String 클래스 파일은 java 디렉터리의 lang 서브 디렉터리 내에 저장된 파일이다. 이로써, 동일한 이름을 가진 클래스일지라도 다른 패키지에 존재하는 것이 가능하여 이름 충돌을 방지한다. 그리하여 다른 개..
[Java] 오버라이딩 (Overriding) 오버라이딩의 역할Override는 말그 대로 메서드 위에 올라타는 것이며, 상위 클래스의 메서드를 하위 클래스의 맞게 변경해야하는 경우에 메서드를 오버라이딩(Overiding)한다. Overloading과 용어는 비슷하지만, Overloading은 없던 메서드를 새로 구현한 것이고, Overriding은 상속받은 메서드의 구현부를 변경하는 것이다.  아래의 Point 클래스를 상속받은 Point3D 클래스에서 getLocation 메서드를 해당 클래스에 맞게 인스턴스 변수 z의 출력이 필요하다. 그리하여 오버라이딩을하여 Point3D 클래스에 맞게 메서드 구현부를 변경하였다. 메서드 선언부(메서드명, 매개변수, 반환 타입)는 오버라이드할 메서드와 동일해야한다.class Point { int x;..
[Java] 상속 (Inheritance) 클래스간의 상속 관계상속의 집합 관계와 타입 선언클래스는 멤버 (멤버 변수, 메서드)의 집합이다. 자식 클래스는 부모 클래스의 모든 멤버를 상속(Inheritance) 받는다. 그리므로 부모 클래스는 자식 클래스의 집합 관계로 표현될 수 있다.  위의 집합 관계가 형성되기 때문에, 자식 클래스(Child)는 부모 클래스(Parent) 타입으로 선언할 수 있다. 정확히는 자식 클래스는 부모 클래스에게 모든 멤버를 상속 받았기 때문에, 자식 클래스가 부모 클래스를 포함한 더 큰 범위의 타입이다. 그리하여 아래의 코드 중 Parent parent = new Child(1, 2, 3);에서 자식 클래스(Child)의 인스턴스를 생성하는데, 부모 타입(Parent)으로 선언이 가능하다. 이는 인스턴스의 실제 C..
[Java] 변수의 초기화 초기화 되지 않은 변수 읽기변수를 읽을때 값이 저장되어있지 않으면, 컴파일 에러를 발생한다. 아래의 사진에서 보다시피, 초기화 되지 않는 변수 num를 선언 후에 읽어 들인다면 빌드가 실패한다. java: variable num might not have been initialized 변수가 초기화 되지 않았다는 에러문을 볼 수 있다.  build failed 에러를 살펴보면, compile failed errors: 1을 볼수 있다. 컴파일 에러가 발생한 것이다. 메모리 해제가 안된 메모리 공간을 할당 받을 수 있어, 변수 선언 후 초기화하지 않을시에 예상치 못한 값이 저장되어 있을수 있다. 그 값을 garbage value(쓰레기값)이라고 한다. 따라서 변수를 사용전에 항상 초기화를 해야한다.  해당..
[Java] 생성자 (Constructor) 생성자(Constructor) 개념과 하는일생성자(Constructor)는 인스턴스가 생성될때 호출 되는 인스턴스 초기화 메서드이다. 주로 인스턴스 변수의 초기화 작업에 사용되며, 인스턴스 생성시에 실행되어야 할 작업을 위해서도 사용된다. 생성자도 메서드이기 때문에, 구조도 메서드랑 거의 비슷하지만 리턴값이 없다. 따라서 void 키워드도 메서드명 앞에 붙지 않는다. 그리고 생성자 이름은 클래스 이름과 동일해야한다.class Coffee { // Constructor (생성자) Coffee() { } public static void main(String[] args) { Coffee coffee = new Coffee(); System.o..
[Java] 오버로딩 (Overloading) 오버로딩의 개념과 예제하나의 클래스 내에 메서드 이름이 같아도, 매개 변수가 다르면 메서드를 구별할수 있다. 컴파일러(Compiler)는 메서드를 호출할때, 메서드 이름과 매개변수로 분류하기 때문이다. 정확히는 메서드 이름이 동일하여도, 매개변수의 개수 또는 타입이 다르면 메서드를 정의할 수 있다. 따라서 해당 조건이 만족하지 않으면 컴파일 에러를 발생한다. 그리고 반환 타입은 오버로딩을 구현하는데 상관이 없다. 클래스의 코드가 로딩될때, 하나의 메서드 이름으로 다른 여러 기능을 하는 메서드들을 같이 로딩할수 있어서 오버로딩(overloading)이라고 한다. 인풋값이 달라지게 되면 다른 기능으로 보는 것이다. 다음 코드와 같이, 매개변수 개수 또는 타입이 다른 경우에는 오버로딩이된다. 인자(argume..
[Java] 메서드 (Method) Method란?클래스(Class) 내의 함수(function)를 메서드(method)라고 부른다. method의 사전적의미는 어떤 결과물을 내기 위한, systematic procedure(절차)이다. 예를 들면, 카페의 알바생이 블루베리 스무디를 만들려고 한다. 카페에서 제공하는 레시피를 보고서, 필요한 재료를 넣고 일련의 과정대로 수행을 하면 블루베리 스무디가 만들어진다. 그 레시피가 메서드이다. 이처럼, 알바생은 어떻게 블루베리 스무디를 만들어지는 원리를 모르는 상태에서도 방법만 알면 쉽게 만들수 있다. 알바생은 그저 재료(input)을 넣고 일련의 과정을 수행하면 원하는 블루베리 스무디(output)값을 설계한 것이 메서드이다. 이러한 블루베리 스무디 레시피를 만들어 놓으면 어떤 알바생이건 몇 번..