ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 오버라이딩 (overriding)
    JAVA 2023. 7. 16. 16:43

    오버라이딩(overriding):  '재정의','새롭게 정의한다'라는 뜻

     

    오버라이딩(overriding)이 이뤄지기 위한 조건

    • 메소드 이름 동일
    • 메소드 매개변수의 개수와 데이터 타입, 순서 동일
    • 메소드 반환 타입 동일

    EX1) sum,avg 메소드 오버라이딩

    class Calculator {
        int left,right;
    
        public Calculator(int left,int right){ //부모클래스의 생성자
            this.left = left;
            this.right = right;
        }
    
        public void sum(){ //더하기
            System.out.println(this.left + this.right);
        }
    
        public void avg(){ //평균
            System.out.println((this.left+this.right)/2);
        }
    }
    
    class SubCalculator extends Calculator { //Calculator를 상속한 SubCalculator 클래스
        public SubCalculator(int left,int right) { 
            super(left,right);
        }
    
        public void sum(){ //오버라이딩
            System.out.println("sum overriding :" + (this.left + this.right));
        }
    
        public void avg(){ //오버라이딩
            System.out.println("avg overriding :" + ((this.left+this.right)/2));
        }
    
        public void sub(){
            System.out.println(this.left - this.right);
        }
    }
    
    public class CalculatorDemo {
        public static void main(String[] args) throws Exception {
            SubCalculator c1 = new SubCalculator(20,10);
            c1.sum(); //오버라이딩된 결과로 출력됨
            c1.avg();
            c1.sub();
        }
    }
    sum overriding :30
    avg overriding :15
    10

     

    super 키워드를 이용하면 부모 클래스의 메소드가 가진 기능을 그대로 가져다 쓰면서 동시에 하위 클래스에서 필요로 하는 기능을 하나의 메소드 안에 추가할 수 있다.

    EX2) avg메소드 super 사용하여 오버라이딩

    class Calculator {
        int left,right;
    
        public Calculator(int left,int right){ //부모클래스의 생성자
            this.left = left;
            this.right = right;
        }
    
        public void sum(){ //더하기
            System.out.println(this.left + this.right);
        }
    
        public int avg(){ //평균
            return ((this.left+this.right)/2);
        }
    }
    
    class SubCalculator extends Calculator { //Calculator를 상속한 SubCalculator 클래스
        public SubCalculator(int left,int right) { 
            super(left,right);
        }
    
        public void sum(){ //오버라이딩
            System.out.println("sum overriding :" + (this.left + this.right));
        }
    
        public int avg(){ //오버라이딩, super 키워드사용
            return super.avg();
        }
    
        public void sub(){
            System.out.println(this.left - this.right);
        }
    }
    
    public class CalculatorDemo {
        public static void main(String[] args) throws Exception {
            SubCalculator c1 = new SubCalculator(20,10);
            //c1.sum();
            System.out.println("avg: " + c1.avg());
            //c1.sub();
        }
    }
    avg: 15
Designed by Tistory.