: 하나의 객체가 여러가지 타입을 가질 수 있는 것.
: 상위 클래스 타입의 참조 변수로 하위 클래스 타입의 인스턴스를 참조하여 구현.
: 상위 클래스 타입의 참조변수로 하위 클래스의 인스턴스를 사용할 때 참조변수가 사용할 수 있는 멤버의 개수가 실제 인스턴스의 멤버 개수보다 같거나 적어야 함.
: 하위 클래스에서 상위클래스 타입의 인스턴스를 참조할 수 없음
==>하위 클래스는 상위 클래스보다 멤버의 개수가 많을 수 있기 때문.
참조변수의 타입 변환
1. 서로 상속 관계에 있는 클래스 일때
2. 하위 클래스 타이에서 상위 클래스 타입으로의 변환은 생략가능.
3. 상위 클래스 타입에서 하위 클래스 타입으로 변환할 때는 반드시 명시해야함.
: 한개 이상의 추상메소드를 포함하는 클래스
: 메소드의 집합을 정의 할수 있도록 해줌.
: 동작이 정의 되어 있지 않은 추상메소드를 포함하고 있어 인스턴스는 생성 할 수 없음.
: 인스턴스를 생성하려면 상속을 통해 하위 클래스를 만들고 하위 클래스에서 모든 메소드를 오버라이딩을 해야함.
추상메소드 (abstract method)
: 하위 크래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드.
: 추상 메소드가 포함된 클래스를 상속 받는 하위 클래스가 구현할 수 있게 하기 위함.
: 선언부만 존재. 구현부는 하위 클래스에서 오버라이딩하여 사용.
==> 반드시 사용할 메소드를 추상메소드로 선언해 놓으면 하위 크래스가 상속받을 때 반드시 추상메소드를 재정의 해야함.
: 자바는 하나의 하위 클래스는 하나의 상위 클래스만을 상속받는 단일 상속의 특징을 가졌기 때문에 상속이 아니더라도 다양한 동작을 할 수 있게 하기 위해 사용.
:일종의 추상클래스로 일반 클래스와 마찬가지로 기본 틀을 제공하면서 클래스 사이의 중간역할 까지 담당함.
: 인터페이스는 추상 메소드와 상수만을 포함 할 수 있음.
: 모든 멤버는 public static final 이며, 모든 메소드는 public abstract 이어야 하며 생략 가능함.
: 자신이 직접 인스턴스를 생성할 수 없으므로 구현해줄 클래스를 작성해야함.
: 구현할 추상 메소드는 abstract를 지우고 작성하며, 만약 모든 추상 클래스를 구현하는게 아니라면 abstract를 사용하여 선언은 해주어야함.
: 인터페이스는 인터페이스로부터만 상속 받을수 있으며, 여러개를 상속받을 수 있음.
: 상속과 구현을 동시에 할 수 있음.
<선언>
접근 제어자 interface 인터페이스 이름 {
public static final 타입 상수이름 = 값;
public abstract 메소드 이름 (파라미터 ,....);
}
<구현>
class 클래스이름 implements 인터페이스이름 {}
: 하나의 클래스 안에 선언된 다른 클래스
참고사이트 링크텍스트