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 
 
 } 
분명히 이런 덮어쓰기야말로 우리에게 더욱 유용한 덮어쓰기이다. 왜냐하면 이렇게 해야만 구체적인 대상을 일반적인 대상으로 추상화하는 목적, 실제 다태성을 달성할 수 있기 때문이다.
이상은 단지 나의 개인적인 견해일 뿐, 옳지 않은 점이 있으면 지적해 토론하는 것을 환영합니다.

좋은 웹페이지 즐겨찾기