객체지향 프로그래밍 핵심 오버라이딩, 오버로딩, 다형성

Updated:

오버로딩(OverLoading)

같은 이름의 메서드 여러개를 가지면서 매개변수의 유형과 개수를 다르게 사용하는 기술

  • 즉, Signature(functions)중 parameters의 type과, parameter의 갯수, function name을 통해 같은 이름의 다른 function에 접근하여 실행시킵니다.

  • 단, return type은 function을 구분하는 역할을 수행하지 못합니다.

    • 같은 function name과 같은 parameters의 type인데, return type이 다른경우에는 overloading이 안됩니다. ```java class OverloadingTest{ void cat(){ System.out.println(“No parameter”); }

      void cat(int a, int b){ System.out.println(“Parameter: “+a+”, “+b); }

      void cat(String c){ System.out.println(“Parameter: “+ c); } }

public class OverLoadingTest{

public static void main(String[] args){

    OverloadingTest ot = new OverloadingTest();

    ot.cat();

    ot.cat(20,80);

    ot.cat("Overloading sample")
} } ``` # 오버라이딩(Overriding) **부모 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용하는 기술**
class Parent {

    void display() { System.out.println("부모 클래스의 display() 메소드입니다."); }

}

class Child extends Parent {

    void display() { System.out.println("자식 클래스의 display() 메소드입니다."); }

}

 

public class Inheritance05 {

    public static void main(String[] args) {

        Parent pa = new Parent();

        pa.display();

        Child ch = new Child();

        ch.display();

        Parent pc = new Child();

        pc.display(); // Child cp = new Parent();

    }

}

다형성 (Polymorphism)

  • 자식클래스에 instance를 만들지만, 부모클래스로 data type을 지정할 수 있음

  • 실질적으로는 자식 클래스의 모습이지만, 겉에서 보기엔 부모 클래스로 정의된다.

  • 다형성은 상속을 필수로 동반하는데, 상속할 때 자식클래스를 만들고 부모클래스로 데이터타입을 지정하면 다형성이 형성된다.

  • 위 경우에 s.draw();를 호출하면 똑같은 모양(부모클래스 모양)을 갖고있지만 다양하게 자신이 구현되어있는 function overriding된 function에 의해서 알아서 그려줌.

Leave a comment