객체지향 프로그래밍 핵심 오버라이딩, 오버로딩, 다형성
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