자바 다 형 Overload 와 Override 의 차이

최근 자바 에 관 한 기초 지식 을 보고 수집 정 리 를 했 습 니 다. 
자바 의 계승,방법 덮어 쓰기(재 작성)override 와 방법의 과부하 overload 의 차이 
방법의 재 작성(Overriding)과 재 업로드(Overloading)는 자바 다 형 적 표현 이다.   
재 작성(Overriding)은 부모 클래스 와 하위 클래스 간 의 다 형 적 표현 이 고,재 업로드(Overloading)는 클래스 의 다 형 적 표현 이다.하위 클래스 에서 부모 클래스 와 같은 이름과 인자 가 있 는 방법 을 정의 하면 재 작성(Overriding)이 라 고 합 니 다.하위 클래스 의 대상 이 이 방법 을 사용 할 때 하위 클래스 의 정 의 를 호출 합 니 다.부모 클래스 의 정 의 는" 와 같 습 니 다.차단"됐어.한 클래스 에서 같은 이름 의 여러 방법 을 정의 하면 서로 다른 매개 변수 개수 나 서로 다른 매개 변수 유형 이 있 거나 서로 다른 매개 변수 순서 가 있 으 면 방법의 과부하(Overloading)라 고 합 니 다.접근 권한,반환 형식,던 진 이상 을 통 해 다시 불 러 올 수 없습니다. 
1.오 버 라 이 드 특징   
1.덮어 쓰 는 방법의 표 지 는 덮어 쓰 는 방법의 표지 와 완전히 일치 해 야 덮어 쓰 는 효 과 를 얻 을 수 있다.   
2.덮어 쓰 는 방법의 반환 값 은 덮어 쓰 는 방법의 반환 과 일치 해 야 합 니 다.   
3.덮어 쓰 는 방법 이 던 지 는 이상 은 덮어 쓰 는 방법 이 던 지 는 이상 과 일치 하거나 하위 클래스 와 일치 해 야 합 니 다. 
4.방법 은 final 로 정의 되 어 다시 쓸 수 없습니다.  
5.상속 에 있어 서 만약 에 어떤 방법 이 부모 클래스 에서 접근 권한 이 private 라면 하위 클래스 에서 덮어 쓸 수 없습니다.정의 하면 새로운 방법 만 정 의 했 을 뿐 덮어 쓰 는 효 과 를 얻 지 못 합 니 다.(보통 부류 와 부류 사이 에 존재 한다.) 
2.Overload 특징   
1.리 셋 을 사용 할 때 서로 다른 매개 변수 스타일 만 사용 할 수 있 습 니 다.예 를 들 어 서로 다른 매개 변수 유형,서로 다른 매개 변수 개수,서로 다른 매개 변수 순서(물론 같은 방법 안의 몇 가지 매개 변수 유형 은 반드시 다 르 어야 한다.예 를 들 어 fun(int,float)일 수 있 지만 fun(int,int)일 수 없다.   
2.접근 권한,반환 형식,던 진 이상 을 통 해 다시 불 러 올 수 없습니다.   
3.방법의 이상 유형 과 수량 은 과부하 에 영향 을 주지 않 습 니 다.   
4.과부하 사건 은 보통 같은 유형 에서 발생 하고 서로 다른 방법 간 의 현상 이다. 
5.같은 유형 에 존재 하지만 허 방법 과 추상 적 인 방법 만 덮어 쓸 수 있다. 
그 구체 적 인 실현 메커니즘: 
overload 는 과부하 이 고 과부하 는 매개 변수 다 중 체제 이다.즉,코드 는 매개 변수의 유형 이나 갯 수 를 통 해 이 루어 지 는 다 중 체제 이다.정적 바 인 딩 메커니즘 입 니 다.   
    
override 는 덮어 씁 니 다.덮어 쓰 기 는 동적 연결 의 다 중 메커니즘 이다.즉,부모 클래스 와 하위 클래스 에서 같은 이름 의 요소(예 를 들 어 구성원 함수)는 서로 다른 실현 코드 를 가지 고 있다.실행 되 는 코드 는 실행 시의 실제 상황 에 따라 정 해진 것 입 니까? 
Overrride 인 스 턴 스:
class A{   
public int getVal(){   
   return(5);   
}   
}   
class B extends A{   
public int getVal(){   
   return(10);   
}   
}   
public class override {   
public static void main(String[] args) {   
   B b = new B();   
   A a= (A)b;//  b       A      
  
   int x=a.getVal();   
   System.out.println(x);   
}   
} 

결과:10 
오 버 로드 인 스 턴 스: 
//Demostrate method voerloading.   
class OverloadDemo {   
void test(){   
   System.out.println("NO parameters");   
}   
void test(int a){   
   System.out.println("a:"+a);   
}//end of Overload test for one integer parameter.   
void test(int a, int b){   
   System.out.println("a and b:"+a+" "+b);   
     
}
double test(double a){   
   System.out.println("double a:"+a);   
   return a*a;   
}
}
  
public class Overload{   
public static void main(String[] args) {   
   OverloadDemo ob = new OverloadDemo();   
   double result;   
   ob.test();   
   ob.test(10);   
   ob.test(10, 20);   
   result = ob.test(123.25);   
   System.out.println("Result of ob.test(123.25):"+result);
}
}

결과: 
NO parameters 
a:10 
a and b:10 20 
double a:123.25 
Result of ob.test(123.25):15190.5625

좋은 웹페이지 즐겨찾기