Java 기초

Java 기초 (4. Overload vs Override)

Kw_w 2024. 3. 12. 21:30
“노력을 대신할 수 있는 것은 없습니다.”
– 토마스 에디슨

Overload 오버로드

다형성의 특징중에 하나 → 자바에서 다형성의 개념으로 적용

오버로딩

  1. 한 클래스내에 동일한 메소드가 중복되어 정의된 경우
  2. 매개변수 형이나 개수를 다르게 설정할 수 있다.
void simpleMethod(int n) {...}
void simpleMethod(int n, String s) {...}

int simpleMethodOther() {...}
//반환형이 다른경우 오버로딩이 성립되지 않음

Example

public class Person {
    int age;
    String name;

    public void setAge(int age){
//        if(age > 0) age =- 909090;
        this.age = age;
    }
    public void setAge(int age, int padding){
        if(age > 20)padding = 20;
        else padding = 10;
        age += padding;
    }
}

오버라이딩

  1. 상속과 관련이 있다.
  2. 메소드 이름, 메개변수, 반환형이 동일
  3. 자식이 부모의 메소드를 오버라이딩 하게되면 자식의 메소드가 사용된다

Example

- toStirng

public class Person {
    int age;
    String name;

    public void setAge(int age){
//        if(age > 0) age =- 909090;
        this.age = age;
    }
    public void setAge(int age, int padding){
        if(age > 20)padding = 20;
        else padding = 10;
        age += padding;
    }

    //자바 컴파일러에게 상위클래스의 메소드를 오버라이딩 한다고 알려주는 일종의 메모
    @Override
    public String toString(){
        return super.toString();
    }
}
class AppMain {
    public static void main(String[] args) {
        var person = new Person();
        person.age = 90;
        person.name = "david";
        System.out.println(person);
    }
}