2. 클래스 Class


2.1 클래스 선언 & 작성


  • class name, 멤버변수variable, 메서드method를 정의한다.

  • class name대문자로 시작하는 것이 좋다.

  • java 파일 하나에 class는 여러 개가 있을 수 있고, public class는 하나이고,
    public class의 이름과 .java 파일의 이름은 같다.

  • class namecamel notation 방식으로 명명한다.

  • class의 구성요소

    • 멤버변수variable, 상수constant

    • 메서드method

    • 생성자constructor

    • 내부클래스

// Class Syntax
modifier class class_name {
	attribute_declaration	//속성 (변수, 상수)
    constructor_declaration	//생서자
    method_declaration		// 메서드
}

2.2 Package


  • packageclassinterface의 집합이다.

  • package 내부의 package를 내부패키지라고 한다. 패키지와 내부패키지는 .으로 구분한다.

  • 내부패키지는 package를 추가로 분류하기 위해 생성되고, 패키지를 통해 동일한 이름의 클래스의 충돌을 방지한다.

package <top package name>[.<sub package name>];

package company.order;
//패키지를 선언한 java 소스 컴파일
javac -d <class 파일생성경로> <컴파일 대상 java소스>
  • import

    • import는 패키지이름 또는 클래스이름까지 작성하여 사용하고자하는 클래스나 API를 정의한다.

    • import를 통해 third party로 제공되는 라이브러리나 다른 개발자가 개발한 패키지클래스를 사용할 수 있다.

import <package name>[.<sub package name>].<class name>
import <package name>[.<sub package name>].*;

import java.util.List;	//List 클래스를 import
import java.util.*;		//util 패키지의 모든 클래스를 import

2.3 제어자 modifier


  • class, variable, method의 선언부에 사용된다.

  • 제어자는 크게 접근제어자와 그 외로 나뉘며, 여러 개의 제어자를 같이 사용할 수 있지만, 접근제어자의 경우 하나만 사용할 수 있다.

  • 접근제어자 public protected private default

  • static final abstract etc.

2.3.2 public


  • public으로 선언된 class, method, variable, constant 는 어디에서나 접급이 가능하다.

  • public method를 통해서만 private 멤버에 접급할 수 있다.

class PrintClass {
	public int var = 1;
    public void print() {
    	System.out.println("!!!!");
    }
}

public class Test {
	public static void main(String[] args) {
    	PrintClass obj = new PrintClass();
        obj.print();
        obj.var = 2;
    }
}

2.3.2 private


  • 일반적으로 캡슐화, 클래스의 데이터 보호에 사용된다.

  • 클래스 선언 시에는 사용되지 않는다.

  • private으로 선언되면 외부에 공개되지 않고, class 내부에서만 접근할 수 있다.

  • 외부에서는 접근할 수 없지만, 해당 classpublic method를 통해서는 접근할 수 있다.

  • 상속관계의 하위클래스에서도 접근할 수 없다.

  • 생성자에 선언하여 상속을 제한할 때도 사용된다.

class PrintClass {
	private int var = 1;
    private void print() {
    	System.out.println("!!!!");
    }
}

public class Test {
	public static void main(String[] args) {
    	PrintClass obj = new PrintClass();
        obj.print();	// error - print() has "private access" in PrintClass
        obj.var = 2;	// error - var has "private access" in PrintClass
    }
}

2.3.3 protected


  • protected로 선언되면 경우에 따라 public , private 특성을 가진다.

  • 같은 class 인 경우 접근이 가능하다.

  • 같은 package인 경우 접근이 가능하다.

  • 상속 관계인 하위class 인 경우 접근이 가능하다.

2.3.4 default


  • 클래스 및 클래스 멤버의 접근 제어의 기본값이다.

  • 특정 키워드는 없고 접근 제어자가 지정되지 않으면 자동으로 default 접근 제어가 된다.

  • default로 선언되면 같은 class 또는 같은 package 에서만 접근 가능하다.

profile
real.great.code

0개의 댓글