자바로 추상적 인 클래스와 인터페이스를 자세히 이해하려고했습니다. 나는 추상 클래스와 인터페이스에서 동일한 서명 메소드를 오버라이드하고 구현하는 것과 관련하여 SO에서 몇 가지 질문을 읽었다.부모 클래스의 메소드 호출
참고 : One, 난 그냥 더 명확하게 개념을 배울 수있는 내 자신의 코드와 노력 그 후 Two
. 그럼 몇 가지 질문을 보았습니다 :
- 추상 클래스로 작성된 구체적인 방법은 무엇이라고합니까?
- 과
I
사이에서 유형 변환이 가능합니까? 객체의 유형이C
일 경우 가능합니까?
나는 아래의 코드로 시도 : 아래의 답변 중 하나의 제안으로 당
Q.3
추가
public class TestMethods {
public static void main(String[] args) {
C c1 = new C();
c1.methodOne();
c1.methodTwo();
// Q.1
A c2 = new C();
// HOW TO CALL METHOD IN CLASS A WITH c2
c2.methodOne(); // I want to call here methodOne() from A
// Q.2
I c3 = new C();
A c4 = (A) c3;
// WILL THIS TYPE CASTING WORKS
// HOW TO CALL METHOD IN CLASS A WITH c4
c4.methodOne();
c4.methodTwo();
}
}
class C extends A implements I{
@Override
public void methodTwo() {
System.out.println("Method Two in Concrete Class C");
}
@Override
public void methodOne(){
System.out.println("Method One in Concrete Class C");
}
}
abstract class A{
public void methodOne(){
System.out.println("Method One in Abstract Class A");
}
public abstract void methodTwo();
}
interface I{
public void methodOne();
public void methodTwo();
}
, 나는 클래스에서 super.methodOne()
를 호출 할 수 있습니다 C
. 그러나 만약 내가 구체적인 클래스 C
에서 그 확장 부모 추상 클래스 A
에서 구체적인 방법을 호출 슈퍼에서 전화가 없어? 그리고 콘크리트 클래스 C
에 수정을 원하지 않으면 수퍼 클래스에서 메서드를 호출 할 수 있습니까?
일부 코드를 사용해 보았지만 어떤 답을 찾지 못했는지 질문했습니다. –