자바 다 형 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.