>  기사  >  Java  >  JAVA 메소드의 오버로딩 및 재정의

JAVA 메소드의 오버로딩 및 재정의

PHP中文网
PHP中文网원래의
2017-06-22 14:25:221332검색

메서드 오버로딩: 동일한 클래스에서 (동일한 기능을 구현하는 데 사용되지만 다양한 사용자를 만족시키기 위해 다른 매개변수가 필요함)

은 동일한 이름, 동일하거나 다른 반환 값을 가진 여러 메소드가 있지만 다른 매개변수(매개변수 수 또는 매개변수 유형)가 클래스에 정의될 수 있음을 의미합니다. 호출 시 사용자가 API를 사용하는 것이 간단하고 편리한 오버로딩을 사용합니다. 동일한 함수를 갖는 메소드에 다른 이름을 지정할 필요가 없으므로 사용자에게는 동일한 작업을 수행하는 것이 동일한 함수를 호출하는 것과 같습니다. 생성자도 오버로드될 수 있습니다. 프로그램이 자체 구성 방법을 정의하는 한 시스템은 기본 구성 방법을 제공하지 않습니다.

메소드 덮어쓰기(재작성): (하위 클래스가 다른 클래스에서 상위 클래스의 메소드를 대체함)

메소드 대체(재정의/덮어쓰기)

오버로딩과의 차이점: 메소드 오버로딩 한 클래스에 여러 함수를 다음과 같이 정의하는 것입니다. 동일한 이름과 동일한 반환 유형이지만 매개변수가 다릅니다

메서드를 재정의할 때: 상위 클래스의 함수를 복사하는 것이 가장 좋습니다

1 하위 클래스에서는 필요에 따라 기본에서 함수를 복사할 수 있습니다. 클래스의 상속된 메서드.

2. 재정의된 메서드는 재정의된 메서드와 동일한 메서드 이름, 매개변수 목록 및 반환 유형을 가져야 합니다.

3. 재정의된 방법은 재정의된 방법보다 더 제한적인 액세스 권한을 사용할 수 없습니다.

Strict order private>default>protecte>public, 이는 다형성과 관련이 있으며, 다형성에 관해 이야기할 때 훨씬 더 이해하게 될 것입니다. 상위 클래스에 의해 특정 위치가 수정되면 상위 클래스의 메소드를 호출할 수 있다. 하위 클래스가 이 메소드에 대해 더 엄격한 액세스 권한을 갖는 경우 하위 클래스를 전달할 때 액세스할 수 없게 될 수 있습니다

Java의 다형성: 오버로딩 + 덮어쓰기

질문: 다형성을 달성하기 위해 Java에서 어떤 메커니즘이 사용됩니까?

다형성은 Java의 객체 지향 기능 중 하나입니다. Java에서는 오버로드 및 덮어쓰기를 통해 다양한 다형성 표현이 달성됩니다. 그러나 둘 사이에는 차이가 있습니다.

1) 오버로드

Java에서 메서드를 오버로드한다는 것은 이름은 같지만 인수 열(매개변수 유형 및 번호)과 정의가 다른 여러 메서드를 만들 수 있음을 의미합니다. 반환값의 종류는 같을 수도 있고 다를 수도 있지만, 오버로드된 함수는 반환값만 다르다고 구분할 수는 없습니다. 메소드를 호출할 때 매개변수 목록을 사용하여 호출할 메소드를 결정합니다. 오버로딩은 클래스의 다형성을 나타냅니다.

2) 재정의

Java에서는 기본적으로 동일한 메서드를 다시 작성하지 않고도 하위 클래스가 상위 클래스의 메서드를 상속할 수 있습니다. 그러나 하위 클래스가 상위 클래스의 메서드를 그대로 상속하고 싶지 않은 경우도 있습니다. 메서드를 재정의(덮어쓰기라고도 함)하여 수행되는 수정입니다. Java에서 덮어쓰기란 ​​동일한 함수의 구현 부분을 하위 클래스의 상위 클래스에서 동일한 이름으로 변경하지만 상위 클래스의 메소드 이름, 반환 유형 및 매개변수 목록을 일관되게 유지하는 것을 의미합니다. 즉, 하위 클래스는 상위 클래스의 함수를 재정의하고 하위 클래스의 새 메서드는 상위 클래스의 원래 메서드를 덮어씁니다. 재정의는 상위 클래스와 하위 클래스 간의 다형성 표현입니다.

위 내용은 JAVA 메소드의 오버로딩 및 재정의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.