인터페이스란
추상 메소드와 상수로 구성된 클래스로, 다중 상속이 가능하며 인스턴스할 수 없는 클래스
인터페이스 선언
접근제한자 interface 인터페이스이름 {}
구현 클래스
접근제한자 class 클래스이름 implements 인터페이스이름 {}
인터페이스에서 정의된 추상 메소드를 오버라이딩하는 클래스
추상 클래스와 인터페이스
구분 | 추상클래스 | 인터페이스 | |
공통점 | 객체 생성 | 객체를 생성(인스턴스화)할 수 없다 | |
추상 메소드 | 추상 메소드를 포함한다 | ||
기능적 목적 | 상속받는 클래스에서는 추상 메소드를 반드시 재정의하여 구현해야 한다 | ||
차이점 | 개념적 목적 | 상속받아서 기능을 확장시키는 데 목적이 있다 | 구현 객체의 동일한 실행 기능을 보장하는 데 목적이 있다 |
클래스 | abstract class, 클래스다 | interface, 클래스가 아니다 | |
일반 메소드 | 일반 메소드 정의가 가능하다 | 일반 메소드 정의가 불가능하다 (특이사항*) | |
멤버 변수 | 클래스와 동일하게 변수 선언 및 사용이 가능하다 | 상수만 사용 가능하다 | |
상속 키워드 | extends | implements | |
다중 상속 | 불가능 | 가능 |
* 특이사항
Java8 이후 static, default 메소드는 정의 가능
출처 https://hahahoho5915.tistory.com/70
내부 클래스란
특정 클래스 내에서 클래스를 선언하여 사용하는 것
내부 클래스를 사용할 때 주의할 점
클래스에서 내부 클래스 안 멤버를 호출할 때는 내부 클래스를 명시해 주어야 한다
public class Classname {
private Innerclass inner;
public Classname() {
inner = new Innerclass();
inner.a = 3;
}
public class Innerclass {
private int a;
}
-> Classname 클래스 안에 있는 Innerclass 클래스 멤버인 a 변수를
Innerclass 클래스 외부에서 호출하기 위해서는 a 변수 앞에 출처(inner.)를 적어 줘야 함