Java에서 재부팅과 재부팅의 비교 및 차이
우선: 오버로드(Overloading)
(1) 방법 재부팅은 유형이 다른 데이터를 통일된 방식으로 처리하는 수단이다.여러 개의 동명 함수가 동시에 존재하고 서로 다른 매개 변수 개수/유형을 가지고 있다.
오버로드는 클래스의 다태성을 나타냅니다.
(2) Java 메소드 재부팅은 클래스에서 여러 메소드를 만들 수 있으며 같은 이름을 가지지만 서로 다른 매개 변수와 정의를 가진다.
방법을 호출할 때 그들에게 전달되는 서로 다른 매개 변수의 개수와 매개 변수 유형을 통해 구체적으로 어떤 방법을 사용할지 결정하는 것이 다태성이다.
(3) 다시 불러올 때 방법 이름은 같지만 매개 변수 형식과 개수가 다르고 반환값 형식은 같을 수도 있고 같을 수도 있습니다.리셋 함수의 구분 기준으로 되돌아오는 형식을 사용할 수 없습니다.
다음은 재부팅의 예입니다.
package c04.answer;//
// , main Dog , Dog this bark 。
다른 재부팅 방법bark는 매개 변수 유형에 따라 구분됩니다.
// : , 。
package c04.answer;
public class Dog {
Dog()
{
this.bark();
}
void bark()//bark()
{
System.out.println(\"no barking!\");
this.bark(\"female\", 3.4);
}
void bark(String m,double l)// : ,
{
System.out.println(\"a barking dog!\");
this.bark(5, \"China\");
}
void bark(int a,String n)// , “ ” “ ”
{
System.out.println(\"a howling dog\");
}
public static void main(String[] args)
{
Dog dog = new Dog();
//dog.bark(); [Page]
//dog.bark(\"male\", \"yellow\");
//dog.bark(5, \"China\");
그리고 다시 쓰기(Overriding)에 대해서 얘기를 해볼게요.(1) 부류와 자류 간의 다태성, 부류의 함수를 재정의한다.하위 클래스에 부모 클래스와 같은 이름과 파라미터를 정의하는 방법이 있다면, 이 방법은 다시 쓰기(Overriding)된다고 합니다.Java에서 하위 클래스는 같은 방법을 다시 작성할 필요 없이 상위 클래스의 방법을 상속할 수 있습니다.
그러나 때때로 자류는 부류의 방법을 그대로 계승하고 싶지 않고 일정한 수정을 하려면 방법의 재작성이 필요하다.
방법 다시 쓰기 일명 방법 덮어쓰기.
(2) 하위 클래스의 방법이 상위 클래스의 어떤 방법과 같은 방법명, 반환 유형과 매개 변수 표를 가지고 있다면 새로운 방법은 원래의 방법을 덮어씁니다.
만약 부류에 있는 방법이 필요하다면 슈퍼 키워드를 사용할 수 있습니다. 이 키워드는 현재 부류의 부류를 인용합니다.
(3) 하위 클래스 함수의 액세스 수식 권한은 상위 클래스보다 적을 수 없습니다.
다음은 다시 쓰는 예입니다.
개념: 즉 대상 방법을 호출하는 메커니즘이다.
동적 바인딩 내막:
1. 컴파일러는 대상 성명의 유형과 방법 이름을 검사하여 모든 후보 방법을 얻는다.이전 베이스 클래스의test를 주석해 보세요. 이 때 다시 컴파일하면 통과할 수 없습니다.
2. 재부팅 결정: 컴파일러 검사 방법이 호출한 매개 변수 유형은 상기 후보 방법에서 유일한 것을 선택한다. (그 사이에 은밀한 유형 전환이 있을 것이다.)
만약 컴파일러가 하나보다 많거나 찾지 못한다면, 컴파일러는 오류를 보고할 것이다.이전 베이스 클래스의test(byte b)를 주석해 보십시오. 이 때 실행 결과는 1입니다.
3. 방법 유형이 priavte static final이고 자바는 정적 컴파일링을 사용하면 컴파일러가 어디로 호출해야 하는지 정확하게 알 수 있다
방법
4. 프로그램이 실행되고 동적 연결을 사용하여 방법을 호출할 때 가상 기기는 대상의 실제 유형과 일치하는 방법 버전을 호출해야 한다.
예에서 b가 가리키는 실제 형식은 Test Overriding이기 때문에 b.test(0)는 하위 클래스의test를 호출합니다.
단, 하위 클래스는test(byte b)를 다시 쓰지 않았기 때문에 b.test((byte) 0)는 상위 클래스의test(byte b)를 호출합니다.
부모 클래스 (byte b) 를 주석하면 두 번째 은밀한 형식을 통해 int로 전환합니다. 최종적으로 호출된 것은 하위 클래스의test (int i) 입니다.
학습 요약:
다태성은 대상을 대상으로 프로그래밍하는 특성으로 방법과 무관하다.
간단하게 말하면 같은 방법으로 입력 데이터에 따라 서로 다른 처리, 즉 방법의
재부팅 - 서로 다른 매개 변수 목록(정적 다태성)
하위 클래스가 상위 클래스에서 같은 방법을 계승하고 데이터를 입력하는 것은 같지만 상위 클래스와 다른 응답을 하려면 상위 클래스를 덮어쓰고,
즉 하위 클래스에서 이 방법을 다시 쓰는 것이다. 같은 매개 변수, 다른 실현(동적 다태성)
OOP의 3대 특징: 계승, 다태, 봉인.
public class Base
{
void test(int i)
{
System.out.print(i);
}
void test(byte b)
{
System.out.print(b);
}
}
public class TestOverriding extends Base
{
void test(int i)
{
i++;
System.out.println(i);
}
public static void main(String[]agrs)
{
Base b=new TestOverriding();
b.test(0)
b.test((byte)0)
}
}
이때의 출력 결과는 10입니다. 이것은 실행할 때 동적 귀속의 결과입니다. 다시 쓰기의 주요 장점은 특정 하위 클래스의 특징을 정의할 수 있다는 것이다.
public class Father{
public void speak(){
System.out.println(Father);
}
}
public class Son extends Father{
public void speak(){
System.out.println("son");
}
}
이것을 다태성이라고도 부른다. 다시 쓰는 방법은 계승 관계에만 존재하고 다시 쓰는 방법은 부류의 비사유적인 방법만 다시 쓸 수 있다.이전 예에서 Father 클래스speak () 방법이private일 때, Son 클래스는 Father 클래스speak () 방법을 다시 쓸 수 없습니다. 이때 Son 클래스speak () 방법은 Son 클래스에서 정의한speak () 방법과 비슷합니다.
Father 클래스speak () 방법이 final일 때,public,protected 및 기본값으로 수식되었을 때,Son 클래스는Father 클래스speak () 방법을 다시 쓸 수 없습니다.
코드를 컴파일하려고 할 때, 컴파일러가 오류를 보고합니다.예:
public class Father{
final public void speak(){
System.out.println("Father");
}
}
public class Son extends Father{
public void speak(){
System.out.println("son");
}
} // ;
Father 클래스speak () 방법이 기본적으로 수식될 때, 같은 가방에서만 사용할 수 있고, 하위 클래스에서만 다시 쓸 수 있으며, 같은 가방에 있지 않으면 다시 쓸 수 없습니다.Father 클래스speak () 방법이protoeted에 의해 같은 가방에서 하위 클래스에 의해 다시 작성될 뿐만 아니라 다른 가방의 하위 클래스에도 다시 쓸 수 있습니다.
다시 쓰기 방법의 규칙:
1. 매개 변수 목록은 다시 쓰는 방법과 완전히 같아야 한다. 그렇지 않으면 다시 쓰는 것이 아니라 다시 쓰는 것이라고 할 수 없다.
2. 되돌아오는 유형은 다시 쓰는 방법의 되돌아오는 유형과 항상 같아야 한다. 그렇지 않으면 다시 쓰는 것이 아니라 다시 쓰는 것이라고 할 수 없다.
3. 액세스 수식자의 제한은 다시 쓰는 방법의 액세스 수식자보다 커야 한다(public>protected>default>private)
4. 다시 쓰는 방법은 반드시 새로운 검사 이상을 내놓거나 다시 쓰는 방법보다 더욱 광범위한 검사형 이상을 설명할 수 없다.예:
부류의 한 방법은 이상 검사 IO Exception을 설명했습니다. 이 방법을 다시 쓰면 Exception을 던질 수 없고 IO Exception의 부류 이상만 던질 수 있으며 비검사 이상을 던질 수 있습니다.
다시 로드하는 규칙:
1. 서로 다른 매개 변수 목록이 있어야 한다.
2. 꾸짖지 않는 반환 유형이 있을 수 있으며 매개 변수 목록이 다르면 된다.
3. 서로 다른 액세스 수식자 있음;
4. 다른 이상을 던질 수 있다.
재작성과 재부팅의 차이점은 다음과 같습니다.
다시 쓰는 다태성은 작용을 하는데 다시 불러오는 방법을 호출하면 코드의 입력량을 크게 줄일 수 있다. 같은 방법명은 안에 서로 다른 파라미터를 전달하면 서로 다른 기능이나 반환 값을 가질 수 있다.
재작성과 재부팅을 잘 하면 구조가 뚜렷하고 간결한 종류를 설계할 수 있다. 재작성과 재부팅이 코드를 작성하는 과정에서 작용하는 것은 보통이 아니라고 할 수 있다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.