인터페이스 밑그림만 그려져 있는 기본 설계도 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 인터페이스로부터만 상속받을 수 있으며, 클래스와 달리 다중상속이 가능하다. 추상클래스와 마찬가지로 인스턴스를 생성할 수 없으며 인터페이스를 implements하는 클래스를 통해 완성된다. 인터페이스의 장점 인터페이스를 작성하면 메서드의 내용을 몰라도 프로그램을 작성하는 것이 가능하기 때문에 한 쪽에서는 인터페이스를 구현하는 클래스를 작성하고, 다른 쪽에서는 프로그램을 작성하여 협업 시 개발 시간을 단축시킬 수 있다. 프로젝트의 기본 틀을 인터페이스로 작성하면 표준화된 프로그램 개발이 가능하다. 서로 관계없는 클래스들이 하나의 인터페이스를 구현하도록 함으로써 클래스 간 관계를 맺어 줄 수 있다. 인터페이스를 사용하면 클래스의 선언과 구현을 분리시킬 수 있기 때문에 클래스 간 독립적
제어자(modifier) 클래스, 변수 또는 메서드 선언부에 함께 사용되어 부가적인 의미를 부여한다. 접근 제어자: public, protected, default, private 접근 제어자는 한 번에 한 가지만 사용할 수 있으며 주로 제일 왼쪽에 위치한다. 기타: static, final, abstract, native, transient, synchronized, volatile, strictfp 접근 제어자(access modifier) 멤버 또는 클래스에 대한 외부의 접근을 제한하는 역할을 한다. 목적 클래스 내부에 선언된 데이터의 보호 내부적으로만 사용되는 멤버변수나 메서드 등을 클래스 내부에 은닉 멤버 변수는 상속이 예상된다면 protected, 아니라면 private으로 선언하고 getter, setter를 통해 접근하도록 정의한다. 접근 제어자의 종류 private: 같은 클래스 내에서
패키지 클래스의 묶음 서로 다른 패키지에는 같은 이름의 클래스가 존재할 수 있다. 클래스의 full name은 패키지 이름을 포함하고 있다. 패기지는 다른 패키지를 포함할 수 있다. > 1) java.lang.String 클래스는 java/lang 디렉터리에 속한 String.class 파일이다. 2) System클래스 역시 java/lang 디렉토리에 속해있다. 패키지 선언 클래스명과의 구분을 위해 패키지명은 소문자로 적는 것을 원칙으로 한다. 패키지 선언은 주석과 공백을 제외한 소스 파일의 첫 문장이어야 한다. 패키지를 선언하지 않는다면 자바에서 기본적으로 제공하는 unnamed package 안에 클래스가 생성된다. 클래스 패스 패키지의 root directory를 classpath에 포함시켜야 JVM이 패키지 내 클래스를 찾을 수 있다. ;를 구분자로 여러 개의 경로를 클래스 패스에 지정할 수 있다. impo