박수진_0926
오버라이딩
메소드 오버라이딩이란?
•
상속 관계에서 자식 클래스가 부모 클래스의 메소드를 자신의 필요에 맞추어 재정의
•
함수 바디만 달리함
package java_0923;
//부모클래스
class Shape{
public void draw() {
System.out.println("도형을 그립니다. ");
}
}
//Rectangle 클래스
class Rectangle extends Shape{
@Override
public void draw() {
System.out.println("사각형을 그립니다.");
}
}
//Circle 클래스
class Circle extends Shape{
@Override
public void draw() {
System.out.println("원을 그립니다.");
}
}
//Triangle 클래스
class Triangle extends Shape{
@Override
public void draw() {
System.out.println("삼각형을 그립니다.");
}
}
public class OverTest {
public static void main(String[] args) {
Shape shape = new Shape();
shape.draw();
Rectangle rect = new Rectangle();
rect.draw();
}
}
Java
복사
위와같이 Override 애너테이션을 붙어주면 자바측에서 부모 메서드를 먼저 찾으려고함!
성수연_0926
오버로딩
•
기존에 없는 새로운 메서드를 정의하는 것
(원래 한 클래스 내에 같은 이름의 메소드를 둘 이상 가질 수 없지만
매개변수의 개수나 타입을 다르게 하면 하나의 이름으로 메소드를 작성할 수 있게 하는 것)
오버로딩을 사용하는 이유
•
하나의 메소드 이름안에 여러개의 기능들을 넣기 위해
오버로딩이 성립하기 위한 조건
•
메서드 이름이 동일해야함
•
매개변수의 개수 또는 타입이 달라야
•
반환 타입은 영향 없다
오버로딩과 오버라이딩 구별하기
class Parent {
void parentMethod() {}
}
class Child {
void parentMethod() {} // 오버라이딩
void parentMethod() {} // 오버로딩
void childMethod() {}
void childMethod(int i) {} // 오버로딩
}
JavaScript
복사
오버라이딩 vs 오버로딩 (면접 단골)
오버라이딩은 상속관계에서 바디만 바꿀때,
오버로딩은 파라미터 개수와 타입을 다르게하여 적용할 수 있도록 하는것
예) system.out.println() → 다양한 타입들을 적용할 수 있도록 고슬링아저씨가 오버로딩해놓은것