ext2.OverridingEx02-오버라이딩 관계에서의 메소드 호출

CODEDRAGON Development/Java

반응형

   

오버라이딩 관계에서의 메소드 호출

참조변수의 자료형에 상관없이 오버라이딩 된 메소드는 외부로부터 가려지므로, 마지막으로 오버라이딩 한 메소드가 호출된다

   

   

   

FileInfo

package com.ext2;

OverridingEx02.java

   

   

   

   

   

출력 결과

   

   

   

소스코드

package com.ext2;

class AClass
{
        public void rideMethod(){
                System.out.println("AClass's Method");}
        public void loadMethod(){
                System.out.println("void Method");}
}

class BClass extends AClass
{
        @Override
        public void rideMethod(){
                System.out.println("BClass's Method");}

        public void loadMethod(int num){
                System.out.println("int Method");}
}

class CClass extends BClass
{
        @Override
        public void rideMethod(){
                System.out.println("CClass's Method");}
        
        public void loadMethod(double num){
                System.out.println("double Method");}
}


public class OverridingEx02 {

        public static void main(String[] args) {
                AClass ref1=new CClass();               
                BClass ref2=new CClass();
                CClass ref3=new CClass();
                //
컴파일 완료된 (문장이 끝난후) 참조변수에 대한 자료형 정보를 가지고 있지만 실제로 참조하는 지는(new CClass()) 지워지게 됩니다.
                
                ref1.rideMethod();
                ref2.rideMethod();
                ref3.rideMethod();
                //
참조변수의 자료형에 상관없이 오버라이딩 메소드는 외부로부터 가려지므로,
                //
마지막으로 오버라이딩 메소드가 호출됩니다
                
                ref3.loadMethod();
                ref3.loadMethod(1);
                ref3.loadMethod(1.2);
        }
}

 


반응형