클래스 관계
*클래스의 import
같은 패키지 안에서는 import문 없이 객체를(instance)를 생성해 모든 public클래스를 사용할 수 있다.
클래스를 임포트할 때에는 두가지 방법이 있다.
java.util.Date today = new java.util.Date
import java.util.Date;
...
Date today = new Date();
import 문
소스파일의 가장 상단에 위치; 포함시키는 클래스를 정의
와일드카드(*)를 사용하여 특정패키지의 모든 클래스를 포합시킬 수 있다.
**단, 사용하려는 클래스가 두 곳 이상의 패키지에 포함된 경우 컴파일 에러가 발생
Static 키워드 또한 import 할 수 있다.
import static 문을 사용하면 정적 메소드 필드를 클래스명 없이 사용할 수 있다.
와일드 카드를 사용하여 해당 클래스의 모든 정적 요소들을 포함 시킬 수 있다.
그러나, 클래스명 없이 정적 요소를 사용하는 것은 코드가 명시적이지 않아 권장하지 않는다.
패키지의 구성
Inheritence(상속)
상속은 연관있는 클래스들에 대해 공통적인 구성요소를 정의하고, 이를 대표하는 클래스를 정의하는것
상속관계는 "is a"관계를 의미
extends 키워드를 이용하여 상속관계를 정의
상속을 받는 클래스를 sub class, derived class, extended classs, child class라고 한다
상속을 제공하는 클래스를 super class,base class, parent class라 한다.
자식클래스는 부모틀래스를 상속받아서 부모클래스의 모든 자원(속성, 메소드)을 사용할 수 있다.
자식클래스는 부모클래스에 없는 필드와 메소드를 정의하여 기능을 추가할 수 있다.
상위클래스에 정의된 메소드를 재정의하여 다르게 동작시킬 수 있다.(오버라이딩)
protected
상속 관계의 초기화 과정
-상속관계에서 자식 클래스를 인스턴스화 하면 부모 클래스의 객체도 인스턴스화가 진행된다.
-자식 클래스의 객체가 인스턴스화 되기 위해서느 먼저 부모 클래스의 객체가 인스턴스화 되어야 한다. 자식 클래스의 객체를 인스턴스하면 자동으로 부모클래스가 인스턴스화 된다.
-상속 구조에서 가장 상위의 부모 클래스부터 차례로 인스턴스화 된다.
-모든 클래스는 기본적으로 object클래스를 상속받는다.
super()
메소드 재정의
public > protected > package > private 순으로 접근 지정자의 범위의 넓이가 넓다.