추상클래스/인터페이스

정선우·2021년 10월 18일
0

abstract/interface

목록 보기
1/1

추상클래스

이론 요약: 추상클래스는 일반 클래스와 같으나(=일반적인 실제 구체적 로직을 가지고 있는 메소드와 필드도 존재할 수 있음) 하나 이상의 추상메소드를 가지고 있는 클래스로, 직접적으로 사용할 수는 없고 반드시 상속을 받아서 하위 클래스에서 구현하도록 강제하는 것이다.
규모가 크고 다양한 맥락에서 사용될 수 있는 기능 안에 공통적인 부분이 있고, 용도에 따라 달라지는 기능이 있을 때 사용.

사용법:
추상 클래스를 생성할 때에는 abstract Class 클래스명{}으로 생성하고,
추상 메소드를 생성할 때에는 public abstract 타입명 메소드명(); 의 형식으로 생성한다.

추상메소드: 자식클래스에서 반드시 오버라이딩 해야만 사용할 수 있는 메소드, 구현하는 로직이 없는 빈 깡통같은 느낌. 추상 메소드에는 중괄호가 없다. 즉, 실제 구체적인 구현 부분이 없다는 것.
사용하려면 재정의(오버라이딩)하여 사용해야한다. (실제 구현 부분은 메소드를 상속받은 하위 클래스의 책임으로 위임.)
상속을 받을 때는 extends를 사용.

언제 사용하는지: 규모가 작은 경우에는 크게 효용이 없으나, 규모가 크고 다양한 맥락에서 사용될 수 있는 기능이 있을 때.그 기능의 공통적인 부분이 있으며, 그것을 사용하는 용도에 따라서 달라질 수 있는 기능이 있다면 활용하기 적합하다.

인터페이스

이론 요약: 인터페이스는 추상메소드와 상수만을 멤버로 가지며,
인터페이스의 사용을 위해서는 반드시 인터페이스의 메소드들을 구현해야 한다는 규제이다.

어떠한 클래스에서 특정 인터페이스를 사용한다면, 그 클래스는 반드시 해당 인터페이스에 포함된 메소드들을 구현해야 한다고 강제해놓은 규제이다.(인터페이스에서 강제하는 메소드를 구현하지 않으면 컴파일조차 되지 않는다.)

사용법:
인터페이스를 생성할 때에는 interface 인터페이스명 {}으로 생성하고,
인터페이스는 추상메소드 또는 상수만을 멤버로 가질 수 있다.
구체적인 로직을 가지고 있는 것은 인터페이스에서 사용할 수 없음.(추상클래스와의 차이점)반드시 본체가 없는 메소드만을 가져야 한다.
(접근하여 구현해야하기 때문에 인터페이스의 멤버는 반드시 public 이어야 한다.) 구현할 클래스는 implements를 사용.
어떠한 클래스가 어떠한 메소드(멤버)들을 가지고 있는가를 보여주는 명세서와 같은 역할.

특징: 인터페이스도 상속이 가능하고, 여러 인터페이스를 한 클래스에서 구현할 수 있다.

0개의 댓글