Java에서 오버로딩과 재작성의 차이점
Java를 배우는 학생들 주목! ! !
학습 과정에서 문제가 발생하거나 학습 리소스를 얻고 싶다면 Java 학습 교류 그룹 159610322에 가입하세요. 함께 Java를 배우자!
먼저 이야기해 보겠습니다. 오버로딩
(1) 메서드 오버로딩은 클래스가 다양한 유형의 데이터를 통합된 방식으로 처리하는 수단입니다. 동일한 이름을 가진 여러 함수가 동시에 존재하며 매개변수의 수/유형이 다릅니다.
오버로딩은 클래스의 다형성을 나타냅니다.
(2) Java 메소드 오버로드는 이름은 같지만 매개변수와 정의가 다른 여러 메소드를 작성할 수 있음을 의미합니다.
메서드를 호출할 때 전달된 매개변수의 수와 유형에 따라 사용할 메서드를 결정합니다. 이것이 다형성입니다.
(3) 오버로딩 시 메소드 이름은 동일해야 하지만 매개변수 유형과 개수가 다르며, 반환값 유형은 동일하거나 다를 수 있습니다. 반환 유형은 오버로드된 함수를 구별하는 기준으로 사용될 수 없습니다.
다음은 오버로딩의 예입니다.
package c04.answer;//패키지 이름입니다
//이 프로그램의 첫 번째 프로그래밍 방법입니다. 메인 메서드에서 먼저 Dog 클래스 인스턴스를 생성하고, then in Dog 이 키워드는 클래스 생성자에서 다양한 껍질 메서드를 호출하는 데 사용됩니다.
다양한 오버로드 메서드 바크는 매개변수 유형에 따라 구별됩니다.
//참고: 생성자를 제외하고 컴파일러는 다른 곳에서는 생성자를 호출하는 것을 금지합니다.
패키지 c04.answer;
공개 클래스 Dog {
Dog()
{
this.bark();
}
void 껍질()//bark() 메서드는 오버로드된 메서드입니다.
| 짖는 소리!");
This.bark("female", 3.4);
}
void짖는 소리(String m, double l)//참고: 오버로드된 메서드의 반환 값은 동일합니다.
{
시스템. out.println("짖는 개!");
'매개변수 유형'과 '클래스 이름'으로만 구별할 수 있습니다. System.out. Dog dog = new Dog()
그럼 재정의에 대해 이야기해 보겠습니다
(1) 상위 클래스와 하위 클래스 간의 다형성으로 상위 클래스의 기능을 재정의합니다. 하위 클래스에 정의된 메서드가 상위 클래스와 동일한 이름과 매개변수를 갖는 경우 해당 메서드가 재정의되고 있다고 말합니다. Java에서 하위 클래스는 동일한 메서드를 다시 작성하지 않고도 상위 클래스의 메서드를 상속받을 수 있습니다.
그러나 때로는 하위 클래스가 상위 클래스의 메서드를 변경 없이 상속하기를 원하지 않지만 특정 수정을 하려고 하는데, 이 경우 메서드를 다시 작성해야 합니다.
메소드 재작성은 메소드 덮어쓰기라고도 합니다.
(2) 하위 클래스의 메서드가 상위 클래스의 메서드와 동일한 메서드 이름, 반환 유형, 매개변수 목록을 갖는 경우 새 메서드가 원래 메서드를 덮어씁니다.
부모 클래스에서 원래 메소드가 필요한 경우 현재 클래스의 부모 클래스를 참조하는 super 키워드를 사용할 수 있습니다.
(3) 하위 클래스 함수의 액세스 수정 권한은 상위 클래스의 액세스 수정 권한보다 작을 수 없습니다.
다음은 다시 작성하는 예입니다.
개념: 객체 메서드를 호출하는 메커니즘.
동적 바인딩의 내부 이야기:
1. 컴파일러는 모든 후보 메소드를 얻기 위해 객체 선언의 유형과 메소드 이름을 확인합니다. 위 예제에서 Base 클래스의 테스트를 주석 처리하려고 하면 컴파일이 통과되지 않습니다.
2. 오버로드 결정: 컴파일러는 메소드 호출의 매개변수 유형을 확인하고 위의 후보 메소드 중에서 하나만 선택합니다(이 프로세스 중에 암시적 유형 변환이 발생합니다).
컴파일러가 둘 이상을 발견하거나 아무것도 발견하지 못한 경우 컴파일러는 오류를 보고합니다. 위 예제에서 Base 클래스의 테스트(바이트 b)를 주석 처리해 보세요. 실행 결과는 1 1입니다.
3. 메소드 유형이 priavte static final이고 Java가 정적 컴파일을 사용하는 경우 컴파일러는 호출할
메소드를 정확히 알 수 있습니다.
4. 프로그램이 실행 중이고 동적 바인딩을 사용하여 메소드를 호출할 때 가상 머신은 객체의 실제 유형과 일치하는 메소드 버전을 호출해야 합니다.
예제에서 b가 가리키는 실제 유형은 TestOverriding이므로 b.test(0)는 하위 클래스의 테스트를 호출합니다.
그러나 하위 클래스는 test(byte b)를 재정의하지 않으므로 b.test((byte)0)는 상위 클래스의 test(byte b)를 호출합니다.
부모 클래스의 (바이트 b)를 주석 처리하면 두 번째 단계에서 암시적 유형이 int로 변환되고, 최종적으로 하위 클래스의 test(int i)가 호출됩니다.
학습 요약:
다형성은 객체 지향 프로그래밍의 특징이며 메서드와는 아무런 관련이 없습니다.
간단히 말해 동일한 메서드라도 다른 입력 데이터에 따라 다른 처리를 수행할 수 있습니다. 즉, 메서드
오버로딩 - 다른 매개변수 목록 사용(정적 다형성)
하위 클래스가 상위 클래스로부터 동일한 메소드를 상속하는 경우 입력 데이터는 동일하지만 상위 클래스와 다른 응답을 만들고 싶은 경우 상위 클래스를 재정의해야 합니다. 클래스 메서드는 하위 클래스의 메서드를 다시 작성하는 것을 의미합니다. - 동일한 매개변수, 다른 구현(동적 다형성)
OOP의 세 가지 주요 특징: 상속, 다형성 및 캡슐화. System.out.print(b);
}} L 공개 클래스 테스트 재정의로 Base 확장
{ void test (int i) {
++;
System.out.println (i) s); n 기본 B = 새로운 TestOverriding();
재정의의 주요 장점은 하위 클래스에 고유한 특성을 정의할 수 있다는 것입니다.
public class Father{
public void talk(){
System.out.println(Father);
}
}
public class Son은 Father를 확장합니다{
public void talk(){
System.out.println("son");
}
}
Father 클래스의 talk() 메서드가 최종적으로 완료되면 메서드가 public, protected 또는 default로 수정되는지 여부에 관계없이 Son 클래스는 Father 클래스의 talk() 메서드를 전혀 재정의할 수 없습니다.
코드를 컴파일하려고 할 때 컴파일러는 오류를 보고할 것입니다. 예:
public class Father{
final public void talk(){
System.out.println("Father");
}
}
public class Son 확장 Father{
public void talk( ; 서브클래스에 의해 재정의되며 동일한 패키지에 없으면 재정의될 수 없습니다.
Father 클래스의 talk() 메서드가 프로토타입되면 동일한 패키지의 하위 클래스에 의해 재정의될 뿐만 아니라 다른 패키지의 하위 클래스에 의해 재정의될 수도 있습니다.
메서드 재정의 규칙:
1. 매개변수 목록은 재정의된 메서드와 완전히 동일해야 합니다. 그렇지 않으면 덮어쓰기가 아니라 오버로드라고 할 수 있습니다.
2. 반환 유형은 항상 재정의된 메서드의 반환 유형과 동일해야 합니다. 그렇지 않으면 덮어쓰기가 아니라 오버로드라고 할 수 있습니다.
3. 액세스 수정자 제한은 재정의된 메서드의 액세스 한정자보다 커야 합니다(공개> 보호> 기본> 개인)
4 재정의된 메서드는 새 검사 예외를 발생시키지 않거나 재정의된 메서드보다 커야 합니다. 더 넓은 검사 예외. 예:
부모 클래스의 메서드는 확인된 예외 IOException을 선언합니다. 이 메서드를 재정의하는 경우 IOException의 하위 클래스에 대한 예외만 발생할 수 있으며 확인되지 않은 예외도 발생할 수 있습니다.
오버로딩 규칙:
1. 매개변수 목록이 다르면 중요하지 않은 반환 유형을 가질 수 있습니다.
3.
4. 다양한 예외가 발생할 수 있습니다.
재작성과 오버로딩의 차이점은 다음과 같습니다.
재작성 다형성은 작동하며 오버로드된 메서드를 호출할 때 코드 크기를 크게 줄일 수 있습니다. 다른 매개변수가 전달되는 한 다른 함수나 반환 값을 가질 수 있습니다.
재작성과 오버로딩을 잘 활용하면 명확하고 간결한 구조의 클래스를 설계할 수 있습니다. 코드를 작성하는 과정에서 재작성과 오버로딩이 아주 중요한 역할을 한다고 할 수 있습니다.
자바를 배우는 학생들은 주목해주세요. ! ! !
학습 과정에서 문제가 발생하거나 학습 리소스를 얻고 싶다면 Java 학습 교류 그룹 159610322에 가입하세요. 함께 Java를 배우자!위 내용은 Java에서 오버로딩과 재작성의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

PHP와 Python은 각각 고유 한 장점이 있으며 다양한 시나리오에 적합합니다. 1.PHP는 웹 개발에 적합하며 내장 웹 서버 및 풍부한 기능 라이브러리를 제공합니다. 2. Python은 간결한 구문과 강력한 표준 라이브러리가있는 데이터 과학 및 기계 학습에 적합합니다. 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

PHP가 많은 웹 사이트에서 선호되는 기술 스택 인 이유에는 사용 편의성, 강력한 커뮤니티 지원 및 광범위한 사용이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 거대한 개발자 커뮤니티와 풍부한 자원이 있습니다. 3) WordPress, Drupal 및 기타 플랫폼에서 널리 사용됩니다. 4) 웹 서버와 밀접하게 통합하여 개발 배포를 단순화합니다.

PHP는 웹 개발 및 컨텐츠 관리 시스템에 적합하며 Python은 데이터 과학, 기계 학습 및 자동화 스크립트에 적합합니다. 1.PHP는 빠르고 확장 가능한 웹 사이트 및 응용 프로그램을 구축하는 데 잘 작동하며 WordPress와 같은 CMS에서 일반적으로 사용됩니다. 2. Python은 Numpy 및 Tensorflow와 같은 풍부한 라이브러리를 통해 데이터 과학 및 기계 학습 분야에서 뛰어난 공연을했습니다.

Centos와 Ubuntu의 주요 차이점은 다음과 같습니다. Origin (Centos는 Red Hat, Enterprise의 경우, Ubuntu는 Debian에서 시작하여 개인의 경우), 패키지 관리 (Centos는 안정성에 중점을 둡니다. Ubuntu는 APT를 사용하여 APT를 사용합니다), 지원주기 (Ubuntu는 5 년 동안 LTS 지원을 제공합니다), 커뮤니티에 중점을 둔다 (Centos Conciors on ubuntu). 튜토리얼 및 문서), 사용 (Centos는 서버에 편향되어 있으며 Ubuntu는 서버 및 데스크탑에 적합), 다른 차이점에는 설치 단순성 (Centos는 얇음)이 포함됩니다.
