본문으로 바로가기

Java- 오버라이딩

category 프로그래밍 언어/Java 2019. 7. 7. 22:48

1. 오버라이딩

클래스를 상속받아 해당 조상 클래스의 메서드를 변경하여 사용하는 것을 말합니다.

 

// 오버라이딩의 예
class A {
  int a;
  int b;

  String getVal() {
    return "a :" + a + ", b :" + b;
  };
}

class B extends A {
  int c;

  String getVal() { // 메서드 오버라이딩
    return "a :" + a + ", b :" + b + ", c :" + c;
  };
}

2. Condition

오버로딩과 달리 오버라이딩은 다음 규칙을 만족해야 합니다.

 

  • 메소드 이름이 동일
  • 매개변수 동일.
  • 반환타입이 동일.

오버로딩과 오버라이딩의 차이를 예를 통해 한 눈에 봅시다.

 

// 오버로딩과 오버라이딩의 차이구분
class A {
  void a() {};
}

class B extends A {
  void a() {};     // 오버라이딩
  void a(int i) {}; // 오버로딩
  void b() {}; //새롭게 정의
  void b(int i) {}; // 오버로딩
}

즉 오버로딩은 해당 메소드를 재정의 하여 파라미터를 다르게 한다는 등으로 쓰이게 됩니다.

 

앞서 포스팅을 해놓은 오버로딩을 참고하시기 바랍니다.

2019/07/03 - [프로그래밍 언어/Java] - Java - Overloading

 

Java - Overloading

1. Java Overloading 정의 자바 오버 로딩은 한 클래스 내 동일한 메서드명과 서로 다른 매개변수, 타입을 가지는 메서드를 여러 개 정의하는 것입니다. 오버 라이딩이라는 용어도 존재합니다. 이는 상위 클래스..

dlwjdcks5343.tistory.com

3. super

super는 상위 클래스 즉 상속 받은 클래스에서의 맴버변수를 자신의 클래스내 변수와 이름이 같거나 할 떄 구분해줍니다.

 

public class Test {
  public static void main(String[] args) {
    B b = new B();
    b.method();
  }

}

class A {
  int x = 10;
}

class B extends A {
  int x = 20;

  void method() {
    System.out.println("x = " + x);
    System.out.println("this.x = " + this.x);
    System.out.println("super.x = " + super.x);
  }
}

이는 main에서 수행하게 될 경우

 

해당 B클래스에서 method를 호출하게 되고

 

여기서 그냥 x와 this.x는 해당 B클래스의 x변수를 말하므로 20입니다.

 

super.x는 상속받은 A클래스 내 x값을 의미하므로 super.x는 10입니다.

 

따라서 출력 결과는 아래와 같습니다.

x = 20
this.x = 20
super.x = 10

전에 했던 this()와 마찬가지로 super() 는 조상 클래스의 생성자를 호출해줍니다.

 

 

'프로그래밍 언어 > Java' 카테고리의 다른 글

Java - 제어자  (0) 2019.07.10
Java- 상속  (0) 2019.07.08
Java- 변수 초기화  (0) 2019.07.07
Java- 생성자(Constructor)  (0) 2019.07.04
Java- 가변인자  (0) 2019.07.04