[1. 추상클래스의 이해]
추상 클래스
- 추상 클래스 : 하나 이상의 추상 메소드를 포함하는 클래스
- 다형성을 가지는 메소드의 집합을 정의할 수 있도록 해줌
- 반드시 사용되어야 하는 메소드를 추상 클래스에 추상 메소드로 선언해 놓으면, 이 클래스를 상속받는 모든 클래스에서는 이 추상 메소드를 반드시 재정의해야 함
메소드 오버라이딩
- 객체 지향 프로그래밍에서 서브 클래스 또는 자식 클래스가 자신의 슈퍼 클래스들 또는 부모 클래스들 중 하나에 의해 이미 제공된 메소드를 특정한 형태로 구현하는 것
- 예시
class SuperClass { //슈퍼클래스
public void sum(int x, int y) {
int result = x + y;
System.out.println(result);
}
}
class SubClass extends SuperClass { //서브클래스
public void sum(int x, int y) { //메소드 재정의
int result = x + y + x + y;
System.out.println(result);
}
}
public class Override {
public static void main(String[] args) {
SubClass sub = new SubClass();
sub.sum(1, 2);
}
}
[2. 인터페이스의 이해]
인터페이스(Interface)란
- 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스
- 추상 클래스에는 생성자, 필드, 일반 메소드도 포함하지만, 인터페이스는 추상 메소드와 상수만을 포함
인터페이스 사용의 장점
- 대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화가 가능함
- 클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있으므로 개발 시간 단축 가능
- 클래스와 클래스 간의 관계를 인터페이스로 연결하면 클래스마다 독립적인 프로그래밍 가능
인터페이스 사용 시
- 인터페이스명과 파일명은 같아야 함 (파일명:Engine, 인터페이스: Engine)
- 인터페이스와 연결되는 클래스에는 implements 사용 (public class oldengine implements Engine)
- 예시
package Interface_Ex;
public interface Engine {
public void Start();
public void Stop();
}
package Interface_Ex;
public class oldengine implements Engine{
public void Start(){
System.out.println("OldEngine Start");
}
public void Stop(){
System.out.println("OldEngine Stop");
}
}
package Interface_Ex;
public class enginetest {
public static void main(String[] args) {
Engine engine = new oldengine();
engine.Start();
}
}
'Lang > Java' 카테고리의 다른 글
[spring] IoC 컨테이너 (0) | 2023.06.08 |
---|---|
[java] 예외처리 (0) | 2023.06.04 |
[java] 객체 지향 프로그래밍 (0) | 2023.06.04 |
[Java] 2차원 리스트 List (0) | 2023.04.06 |
[Java] 1차원 리스트 List (0) | 2023.04.06 |