java spring

자바 오버라이딩 오버로딩

윤돌_99 2021. 12. 16. 23:54

자바에서 다형성을 지원하는 방법은 오버로딩과 오버라이딩이 있다.

(다형성: 같은 자료형에 여러 가지 객체를 대입하여 다양한 결과를 얻어내는 성질)

 

오버로딩(Overloading) (확장)

메서드의 이름은 같고 매개변수의 갯수나 타입이 다른 함수를 정의하는 것을 의미한다. 기존에 없던 새로운 메서드를 정의하는 것이다.

 

<예저 code>

package joon;

public class Member {

    // test() 호출
    void test(){
        System.out.println("매개변수 없음");
    }

    // test에 매개변수로 int형 2개 호출
    void test(int a, int b){
        System.out.println("매개변수 "+ a + "와 " + b);
    }

    // test에 매개변수 double형 1개 호출
    void test(double d){
        System.out.println("매개변수 " + d);
    }

}

 

 

오버라이딩(Overriding) (재정의)

상위 클래스의 메서드를 하위 클래스가 재정의하는 것이다. 상속받은 메서드의 내용만 변경 하는 것이다.

 

package joon;

public class codeTest {

    public static void main(String[] args) throws Exception{

        Seller seller = new Seller();

        seller.sellerName = "스티븐";
        seller.goodsCount = 10;
        seller.goodsName = "청소기";

        seller.print();

    }
}
package joon;

public class Goods {

    public String goodsName;
    public int goodsCount;

    public void print(){

        System.out.println("상품 이름은 "+this.goodsName+ "이고, 상품수량은 " + this.goodsCount+"입니다.");
    }

}
package joon;

public class Seller extends Goods {

    String sellerName;

    public void print(){
        System.out.println("상품 이름은 "+this.goodsName+ "이고, 상품수량 " + this.goodsCount+"입니다.");
        System.out.println(this.goodsName+"상품은 "+this.sellerName+"이 판매 담당자입니다.");
    }
}