2.
클래스 Class
2.1
클래스 선언 & 작성class name
, 멤버변수variable
, 메서드method
를 정의한다.
class name
은 대문자
로 시작하는 것이 좋다.
java
파일 하나에 class
는 여러 개가 있을 수 있고, public class
는 하나이고,
public class
의 이름과 .java
파일의 이름은 같다.
class name
은 camel notation
방식으로 명명한다.
class
의 구성요소
멤버변수variable
, 상수constant
메서드method
생성자constructor
내부클래스
// Class Syntax
modifier class class_name {
attribute_declaration //속성 (변수, 상수)
constructor_declaration //생서자
method_declaration // 메서드
}
2.2
Package
package
는 class
와 interface
의 집합이다.
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
내부에서만 접근할 수 있다.
외부에서는 접근할 수 없지만, 해당 class
의 public
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
에서만 접근 가능하다.