728x90
추상클래스(Abstract class)
미완성 설계도
추상 메서드를 선언하여 상속을 통해 자손 클래스에서 완성하도록 유도하는 클래스
[ 특징 ]
- 추상 메서드를 하나 이상 포함하고 있다.
- 추상 클래스는 추상 메서드 뿐만 아니라 생성자,필드,일반 메서드도 포함할 수 있다.
- 상속을 위한 클래스이기 때문에 따로 객체를 생성할 수 없다.
- 다중상속이 불가능하다.
[ 예시 ]
public abstract class Computer {
public abstract void display();
public abstract void typing();
public void turnOff() {
system.out.println("전원 off");
}
}
Computer 라는 추상 클래스 내에는 추상 메서드 display() 와 typing() 가 존재한다
추상 메서드
메서드의 바디부분인 구현부 없이, 선언만 존재
추상 메서드를 포함하는 클래스는 추상 클래스가 되어야 한다.
추상 클래스의 상속 extends
public class DeskTop extends Computer {}
[ 문제 ]
부모 클래스 Computer 에서 자식 클래스 DeskTop 이 상속을 받고자 한다.
어떻게 해야할까?
방법 1 ) 자식 클래스 또한 추상 클래스로 만들어준다
public abstract class DeskTop extends Computer {}
방법 2) 추상 메서드를 일반 메서드로 재정의 한다 -> 오버라이드(Override)
public class DeskTop extends Computer{
@Override
public void display() {
system.out.println("Desktop display");
}
@Overrid
public void typing() {
system.out.println("Desktop typing");
}
}
인터페이스(Interface)
기본 설계도
다른 클래스를 작성하는데 필요한 클래스
[ 특징 ]
- 추상클래스와 마찬가지로 다른 클래스를 작성하는데 도움을 준다.
- 인터페이스 내의 메소드는 모두 추상 메소드로만 이루어져있다.
- 추상클래스와 다르게 다중상속이 가능하다.
? 여기서 다중 상속이란?
자식 클래스가 여러 부모 클래스로부터 상속받는 것을 의미
이렇게 되면 다양한 동작을 수행할 수는 있지만 메서드 출처의 모호성 등 여러 문제가 발생할 수 있어,
java 에서는 다중 상속을 지원하지 않는다.
[ 예시 ]
public interface Switch {
// 인터페이스의 모든 메서드는 추상메서드이다.
public void push(){};
// 인터페이스에서 일반 메서드를 정의하는 방법 -> default 키워드
public default void pop(){}
// 그 외, 생성자나 변수 선언은 불가능
// 상수 선언 가능
public static final String name = "switch";
}
추상클래스와 인터페이스의 공통점
- new 연산자로 인스턴스 생성이 불가능하다
- 사용하기 위해서는 하위클래스에서 확장하여 구현해야한다.
[ 출처 ]
https://blog.naver.com/obndo8539
개발일기 : 네이버 블로그
개발자가 되고픈 코린이
blog.naver.com
728x90
'Java' 카테고리의 다른 글
Java | 특수 문자 출력(\, ") (0) | 2023.06.21 |
---|---|
Java | charAt() - 프로그래머스 문자열 돌리기 (0) | 2023.06.21 |
Java | 오버라이딩(오버라이드) vs 오버로딩 (0) | 2023.04.26 |
Java | extends, implements (0) | 2023.04.23 |
Java | 생성자 new (0) | 2023.04.23 |