오버로딩, 상속, 재정의 및 다형성의 차이점은 다음과 같습니다.
1) 상속은 하위 클래스가 상위 클래스의 구성원을 얻는 경우입니다.
2) 오버라이딩은 상속 후 상위 클래스를 다시 구현하는 방법입니다.
3) 오버로딩은 클래스에서 서로 다른 매개변수와 동일한 이름을 사용하는 일련의 메소드입니다.
4) 다형성은 상위 클래스에 많은 수의 오버로드가 발생하여 코드가 비대해지고 유지 관리가 어려워지는 것을 방지하는 것입니다.
내가 인터넷에서 본 흥미로운 진술은 다음과 같습니다. 상속은 하위 클래스가 상위 클래스를 사용하는 방법이고, 다형성은 상위 클래스가 하위 클래스를 사용하는 방법입니다.
다음 예에는 이러한 네 가지 구현이 포함됩니다.
클래스 Triangle은 Shape {를 확장합니다.
공개 int getSides() {
3을 반환합니다.
}
}
클래스 Rectangle은 Shape를 확장합니다.
공개 int getSides(int i) {
내가 반환;
}
}
공개 클래스 모양 {
공개 부울 isSharp(){
사실을 반환;
}
공개 int getSides(){
0을 반환합니다.
}
공개 int getSides(Triangle tri){
3을 반환합니다.
}
공개 int getSides(직사각형 Rec){
4를 반환합니다.
}
공개 정적 무효 메인(String[] args) {
삼각형 트라이 = new Triangle();
System.out.println("삼각형은 뾰족한 종류인가요? " + tri.isSharp());
도형 모양 = new Triangle();
System.out.println("내 모양에는 " + Shape.getSides() + " 면이 있습니다.");
}
}
빨간색은 오버로딩, 녹색은 덮어쓰기, 파란색은 상속, 분홍색은 다형성
Triangle 클래스의 메서드는 재정의되고 Rectangle 클래스의 메서드는 오버로드됩니다.
빨간색과 분홍색 부분을 비교하면 오버로딩에 비해 다형성의 장점을 찾을 수 있습니다. 오버로딩을 사용하는 경우 모서리 수를 얻는 방법은 각 하위 클래스의 상위 클래스에서 오버로드되어야 하며, 다형성을 사용하는 경우 상위 클래스가 오버로드되어야 합니다. 변의 수를 얻기 위한 인터페이스만 제공하며, 이를 얻는 방법은 각각 서브클래스에서 구현(재작성)됩니다.