Java 구분 방법 덮어쓰기 및 변수 덮어쓰기
방법 재부팅: 만약 두 가지 방법의 방법명이 같지만 매개 변수가 일치하지 않는다면 어느 방법이 다른 방법의 재부팅이라고 말할 수 있겠는가.
방법 덮어쓰기: 하위 클래스에 방법을 정의하면 그 이름, 되돌아오는 유형과 파라미터 서명이 상위 클래스의 어떤 방법의 이름, 되돌아오는 유형과 파라미터 서명과 일치한다면 하위 클래스의 방법이 상위 클래스의 방법을 덮어썼다고 할 수 있다
우리는 다음과 같은 코드를 예로 들어 덮어쓰기 문제를 중점적으로 이야기한다.
public class People {
public String getName() {
return "people";
}
}
public class Student extends People {
public String getName() {
return "student";
}
}
public static void main(String[] args) {
People p=new People();
System.out.println(p.getName());// people
Student s=new Student();
System.out.println(s.getName());// student
People pp=new Student();
System.out.println(pp.getName());// student
}
위 결과 설명: 학생 클래스의 getName 방법이 부모 클래스를 덮어쓰는 데 성공했습니다.변수의 덮어쓰기를 살펴보겠습니다.
public class People {
protected String name="people";
}
public class Student extends People {
protected String name="student";
}
public static void main(String[] args) {
People p=new People();
System.out.println(p.name);// people
Student s=new Student();
System.out.println(s.name);// student
People pp=new Student();
System.out.println(pp.name);// people
}
실행 결과를 통해 나는 변수의 덮어쓰기가 실제적으로 방법과 다르다는 것을 발견했다.내 말로는 변수의 덮어쓰기는 기중기의 덮어쓰기라고 할 수 있다.
그렇지 않으면 데이터 손실 없이 상향 변환
People pp=new Student();
System.out.println(pp.name);// people
내 개인적인 경험에 의하면 변수의 덮어쓰기는 실수를 범하기 쉽다. 다시 C의 계승으로 돌아간 것 같다[여기는 C++가 가상을 가진 계승을 가리키는 것이 아니다]마지막으로 코드를 살펴보겠습니다.
public class People {
protected String name="people";
public String getName() {
return name;
}
}
public class Student extends People {
protected String name="student";
public String getName() {
return name;
}
}
main(String[] args) {
People p=new People();
System.out.println(p.getName());// people
Student s=new Student();
System.out.println(s.getName());// student
People pp=new Student();
System.out.println(pp.getName());// student
}
분명히 이런 덮어쓰기야말로 우리에게 더욱 유용한 덮어쓰기이다. 왜냐하면 이렇게 해야만 구체적인 대상을 일반적인 대상으로 추상화하는 목적, 실제 다태성을 달성할 수 있기 때문이다.이상은 단지 나의 개인적인 견해일 뿐, 옳지 않은 점이 있으면 지적해 토론하는 것을 환영합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.