Java의 추상 클래스(abstract class), 인터페이스(interface)

Dohyeon Kong·2024년 4월 5일
0

Java☕

목록 보기
9/12
post-thumbnail

추상 클래스(abstract class)

  • 상속에서 추상 클래스는 중요한 슈퍼 클래스의 역할을 한다.

추상 메소드(abstract method)

abstract 키워드와 함께 원형만 선언되고, 코드는 작성되지 않은 메소드를 의미한다.

abstract public String getName();
abstract public String fail() { return "Good Bye";}

추상 클래스(abstract class)

abstract 키워드와 함께 선언된 클래스이다.

  • 추상 메소드를 최소 한개 이상 가지고 abstract로 선언된 클래스
  • 추상 메소드가 없어도 abstract로 선언한 클래스
// 추상 메소드를 가진 추상 클래스
abstract class Shape{ //추상 클래스 선언
	public Shape(){..}
    public void edit() {..}
    abstract public void draw(); // 추상 메소드 선언
}
abstract public String getName();
abstract public String fail() { return "Good Bye";}
// 추상 메소드가 없는 추상 클래스
abstract class Shape{ //추상 클래스 선언
	String name;
    public void load(String name) {
    	this.name = name;
    }
}
  • 추상 메소드를 가지고 있으면 반드시 추상 클래스로 선언하여야 한다!

추상 클래스의 인스턴스는 생성할 수 없는데 그 이유는?🤔

실행 코드가 없는 미완성 상태인 추상 메소드가 있을 가능성이 있기 때문이다!

추상 클래스 상속과 구현

추상 클래스의 상속

추상 메소드를 가진 추상 클래스를 상속받는 서브 클래스는 자동으로 추상 클래스가 된다.

  • 추상 메소드를 상속받기 때문이다.

추상 클래스의 구현

서브 클래스에서 슈퍼 클래스의 모든 추상 메소드를 오버라이딩하여 실행 가능한 코드로 구현하는 것

  • 추상 클래스를 구현한 서브 클래스는 인스턴스를 생성할 수 있다.

추상 클래스의 목적

객체를 생성하기 위함이 아니라 상속을 위한 슈퍼 클래스를 활용하기 위해서 사용하는 것이며
추상 메소드를 통해 서브 클래스가 구현할 메소드의 원형을 알려주는 인터페이스 역할과 서브 클래스의 다형성을 실현한다.


인터페이스(interface)

흔히 일상생활에서 말하는 인터페이스는 서로 다른 하드웨어 장치들이 상호 데이털르 주고받을 수 있는 규격을 의미한다.

Java 인터페이스

앞서 말한 인터페이스의 개념을 소프트웨어에 적용한 것으로, 소프트웨어를 규격화된 모듈로 만들고, 인터페이스가 맞는 모듈을 조립하여 응용프로그램을 작성하도록 만드는 것을 의미한다.

  • 'interface' 키워드를 사용하여 클래스를 선언하듯이 선언한다.
interface PhoneInterface{
	public static final int TIMEOUT = 10000; // 상수 필드, public static final 생략 가능
    public abstract void sendCall();  // 추상 메소드, public abstract 생략 가능
    public abstract void receiveCall(); // 추상 메소드, public abstract 생략 가능
    public default void printLog(){ // 디폴트 메소드는 메소드 public abstract 생략 가능
    	System.out.println("** phone **");
    } // 디폴트 메서드
}
  • 인터페이스는 필드(멤버 변수)를 만들 수 없다.
  • 상수, 추상 메소드, default 메소드, private 메소드, static 메소드

인터페이스의 객체는 생성할 수 없다.

  • 실행 코드가 없는 미완성 상태인 메소드가 있을 가능성이 있기 때문이다!

인터페이스 상속

  • 인터페이슨느 다른 인터페이스를 상속할 수 있다.
  • 상속 시 extends 키워드를 이용한다.
  • 또한 인터페이스는 콤마로 연결하여 2개 이상의 인터페이스를 다중 상속할 수 있다.
// 인터페이스 상속
interface Phone extends PhoneInterfac, MP3Inteferace{
	
}

인터페이스 구현

  • 'implements' 키워드를 사용하여 인터페이스의 모든 추상 메소드를 구현한 클래스를 작성한다.
//  인터페이스 구현
class Phone implements PhoneInterface{
	
}

참조📜

  • 명품 JAVA ESSENTIAL - 황기태 지음-
profile
천천히, 꾸준히, 그리고 끝까지

0개의 댓글