>Java >상위 및 하위 클래스의 오버로드된 메소드 호출을 위한 Java 모범 사례

상위 및 하위 클래스의 오버로드된 메소드 호출을 위한 Java 모범 사례

王林
王林앞으로
2024-02-09 11:30:09591검색

PHP 편집자 Zimo는 상위 클래스 및 하위 클래스 오버로드된 메서드를 호출하는 Java 프로그래밍의 모범 사례를 제공합니다. Java에서 상속은 하위 클래스가 상위 클래스의 속성과 메서드를 상속할 수 있도록 하는 중요한 객체 지향 프로그래밍 개념입니다. 메서드 오버로드는 상위 클래스와 하위 클래스가 모두 동일한 이름을 가진 메서드를 정의할 때 발생합니다. 이 경우 프로그램의 정확성과 유지 관리성을 보장하기 위해 부모 클래스와 하위 클래스의 오버로드된 메서드를 올바르게 호출하는 방법에 주의를 기울여야 합니다. 이 기사에서는 Java 프로그래밍에 더욱 익숙해질 수 있도록 부모 클래스와 하위 클래스의 오버로드된 메서드를 호출하는 모범 사례에 대해 자세히 소개합니다.

질문 내용

부모 클래스와 자식 클래스 모두에 의해 오버로드된 메서드를 호출하는 가장 좋은 방법은 무엇입니까? 예를 들어. 부모와 자식 수업이 있다고 가정해 보세요

으아악

두 가지 모두를 오버로드하는 메서드를 만들고 싶습니다

으아악

부모 또는 자식을 생성하고 메소드를 호출하는 메소드를 만들었습니다.call 메소드

으아악

이것은 항상 상위 메소드를 호출하는 것 같습니다. 객체를 하위에 명시적으로 캐스팅하지 않고 하위 메소드를 호출하려면 어떻게 해야 합니까?

해결 방법

제 생각에는 슈퍼 클래스 parent 中创建一个名为 methodcall() 的方法,并分别在 child에서 다음과 같이 재정의해야 합니다.

으아악

수업중child

으아악

그럼 이렇게 전화해methodcall

private class parent{
        public parent() {
        }
    }
    
    private class child extends parent{
        string name;

        public child(string name) {
            this.name = name;
        }
    }

메소드의 서명은 이름과 매개변수 목록에 따라 결정됩니다. 이는 methodcall(parent)methodcall(client)가 다르다는 뜻입니다.

당신이 원하는 것은 과부하가 아니라 압도입니다. 코드의 @override 添加到 child 메소드에 @override 주석을 추가하면 컴파일러가 불평할 것입니다...

클래스의 정의를 변경하지 않은 채로 두면 해당 메서드를 호출하기 위해 child 才能调用相应的方法 - 尽管这根本不起作用,因为 methodcall() 是非静态的(或者您有让 callmethod() 作为 child로 캐스팅해야 합니다. 하지만 methodcall()이 정적이 아니기 때문에 이 방법은 전혀 작동하지 않습니다(또는 callmethod()

의 구성원으로 지정해야 합니다.

또는 다음과 같이 코드를 변경합니다:

으아악

다음과 같이 사용하세요:

으아악

위 내용은 상위 및 하위 클래스의 오버로드된 메소드 호출을 위한 Java 모범 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제