Java 23(Abstract Method, Static Method, Default Method)

Kang.__.Mingu·2024년 5월 9일
0

Java

목록 보기
25/108

추상메소드(Abstract Method)

  • 인터페이스를 상속받은 자식클래스에서 무조건 추상메소드를 오버라이딩 선언
  • 자식클래스에서 추상메소드를 오버라이딩 선언하지 않으면 에러 발생

정적메소드(Static Method)

  • static 제한자를 사용하여 작성된 메소드
  • Java 자료형(클래스 또는 인터페이스)을 사용하여 메소드 호출
  • 정적메소드는 자식메소드는 자식클래스에서 오버라이딩 선언 불가능

기본메소드(Default Method)

  • 인터페이스를 상속받은 자식클래스에서 오버라이딩 선언을 선택할 수 있는 메소드
  • 오버라이딩 선언하지 않으면 기본메소드의 명령 실행

    형식) [접근제한자] default 반환형 메소드형(자료형 변수명, ...) { 명령; 명령; ...}


Printable(Interface)

package xyz.it.realization;

public interface Printable {
	// 추상메소드(Abstract Method)
    void print();

    
    // 정적메소드(Static Method)
    static void power() {
        System.out.println("장치의 전원을 켰습니다.");
    }

    // 기본메소드(Default Method)
    default void scan() {
        System.out.println("[에러] 스캔 기능을 제공하지 않습니다.");
    }
}

PrintMulti(Class)

package xyz.it.realization;

public class PrintMulti implements Printable {
    @Override
    public void print() {
        System.out.println("[복합기] 문서를 출력합니다.");
    }

    @Override
    public void scan() {
        System.out.println("[복합기] 문서를 스캔합니다.");
    }
}

PrintSingle(Class)

package xyz.it.realization;

public class PrintSingle implements Printable {
    @Override
    public void print() {
        System.out.println("[프린터] 문서를 출력합니다.");
    }
}

PrintableApp(호출 Class)

package xyz.it.realization;

public class PrintableApp {
    public static void main(String[] args) {
    	// 부모     참조변수       자식
        Printable printOne = new PrintSingle();

        Printable.power(); // 인터페이스를 사용하여 정적메소드 호출
        printOne.print(); // 묵시적 객체 형변환에 의해 자식클래스의 오버라이딩 선언된 메소드 호출
        printOne.scan(); // 부모 인터페이스의 기본메소드 호출
        System.out.println("==============================================================");
        Printable printTwo = new PrintMulti();

        Printable.power();
        printTwo.print();
        printTwo.scan();
        System.out.println("==============================================================");
    }
}
profile
최선을 다해 꾸준히 노력하는 개발자 망고입니당 :D

0개의 댓글