인프런 커뮤니티 질문&답변

pmrim01님의 프로필 이미지
pmrim01

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

Java언어 기출문제의 변형

상속과 업케스팅

해결된 질문

작성

·

93

·

수정됨

0

  • 상속에서는 부모클래스에 없는 속성을 추가할 수 있는데, 업캐스팅을 할 경우엔, 부모클래스에 없는 함수를 사용하면 안되는 거 맞을까요?

  • 그렇다면 추상화, 인터페이스도 부모클래스에 없는 함수를 사용하면 안되는 거 맞을까요?

답변 1

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

  1. 네 맞습니다.

class Parent {
    void parentMethod() {
        System.out.println("Parent method");
    }
}

class Child extends Parent {
    void childMethod() {
        System.out.println("Child method");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent p = new Child(); // 업캐스팅
        p.parentMethod(); // 가능
        p.childMethod(); // 컴파일 에러
    }
}

 

  1. 부모가 추상클래스 일 때도 마찬가지입니다.

abstract class Parent {
    abstract void abstractMethod();
    void parentMethod() {
        System.out.println("Parent method");
    }
}

class Child extends Parent {
    void abstractMethod() {
        System.out.println("Abstract method implementation");
    }
    void childMethod() {
        System.out.println("Child method");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent p = new Child(); // 업캐스팅
        p.abstractMethod(); // 가능
        p.parentMethod(); // 가능
        p.childMethod(); // 컴파일 에러
    }
}

 

인터페이스일 때도 그렇습니다.

interface ParentInterface {
    void interfaceMethod();
}

class Child implements ParentInterface {
    public void interfaceMethod() {
        System.out.println("Interface method implementation");
    }
    void childMethod() {
        System.out.println("Child method");
    }
}

public class Main {
    public static void main(String[] args) {
        ParentInterface p = new Child(); // 업캐스팅
        p.interfaceMethod(); // 가능
        p.childMethod(); // 컴파일 에러
    }
}
pmrim01님의 프로필 이미지
pmrim01

작성한 질문수

질문하기