'하이딩'에 해당되는 글 1건

  1. 2008.03.25 메소드 오버라이딩, 하이딩, 오버로딩

메소드의 오버라이딩, 하이딩, 오버로딩을 테스트 해 보았다.

오버라이딩과 하이딩의 차이점은 메소드를 static 으로 선언하지 않느냐, 하느냐의 차이이다.

즉 서브클래스의 인스턴스 메소드는 수퍼클래스의 인스턴스 메소드를 오버라이딩한다고 말하고,

서브클래스의 스태틱 메소드는 수퍼클래스의 스태틱 메소드를 하이딩한다고 말한다.

스태틱 메소드가 인스턴스메소드를 오버라이딩하거나 하이딩할 수는 없으며 그 역도 성립하지 않는다.

오버라이딩과 오버로딩의 차이점은 인자가 같으냐 마느냐의 차이이다.

인자가 같다면 메소드 오버라이딩이라 하고, 인자가 다르면 오버라이딩이라고 한다.



/**
 * 메소드 오버라이딩, 하이딩, 오버로딩 테스트
 */
public class ClassA {

 public void methodOne( int i) {
 
 }
 public void methodTwo(int i) {
  System.out.println("메소드2_클래스A");
 }
 public static void methodThree(int i) {
 
 
 }
 public static void methodFour(int i) {
  System.out.println("메소드4_클래스A");
 }
}


public class ClassB extends ClassA {

 /* 컴파일 에러
 public static void methodOne(int i) {
 
 }
public void methodThree(int i) {
 
 }*/
 public void methodTwo(int i) {                         /// 메소드 오버라이딩
  System.out.println("메소드2_클래스B");
 }
 
 
 public static void methodFour(int i) {                ///  메소드 하이딩
  System.out.println("메소드4_클래스B");
 }
 
 public void methodTwo() {                            /// 메소드 오버로딩
  System.out.println("메소드 오버로딩");
 }
 
 public static void methodFour() {                     /// 메소드 오버로딩
  System.out.println("메소드 오버로딩");
 }
 
 public ClassB() {
  methodTwo(1);
  methodTwo();
  super.methodTwo(1);
 
  methodFour(1);
  methodFour();
  super.methodFour(1);
 
 
 }
 
 public static void main(String [] args) {
 
  ClassB cb = new ClassB();
 
 
 }
}

결과는 다음과 같이 나올 것이다.

메소드2_클래스B
메소드 오버로딩
메소드2_클래스A
메소드4_클래스B
메소드 오버로딩
메소드4_클래스A

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요