Java 상속에서 메서드 덮어쓰기 및 재부팅 확인

메소드 덮어쓰기
클래스 계승에서 하위 클래스는 상위 계승에서 온 방법을 수정할 수 있다. 즉, 하위 클래스는 상위 방법과 다른 기능을 가진 방법을 만들 수 있지만 같은 이름, 반환값 유형, 파라미터 목록을 가지고 있다.
새 클래스에 방법을 정의하면 이름, 반환값 형식, 매개 변수 목록이 부모 클래스와 같다면, 새 방법은 이전 방법을 덮어쓰는 것으로 불린다.
매개 변수 목록은 매개 변수 서명이라고도 하는데 매개 변수의 유형, 매개 변수의 개수와 매개 변수의 순서를 포함하고 하나만 다르면 매개 변수 목록이 다르다고 한다.
덮어쓰는 방법은 하위 클래스에서만 슈퍼 호출을 통해 사용할 수 있습니다.
주의: 덮어쓰기는 부모 클래스의 방법을 삭제하지 않고 하위 클래스의 실례를 숨기고 당분간 사용하지 않습니다.
다음 예제를 참조하십시오.

  public class Demo{
  public static void main(String[] args) {
  Dog myDog = new Dog(" ");
  myDog.say(); //  
  Animal myAnmial = new Animal(" ");
  myAnmial.say(); //  
  }
  }
  class Animal{
  String name;
  public Animal(String name){
  this.name = name;
  }
  public void say(){
  System.out.println(" , " + name + ", ");
  }
  }
  class Dog extends Animal{
  //  , super() 
  public Dog(String name){
  super(name);
  }
  //  say()  
  public void say(){
  System.out.println(" , " + name + ", ");
  }
  }
실행 결과:

, ,
, ,
메소드 덮어쓰기 원칙:
덮어쓰기 방법의 반환 유형, 방법 이름, 매개 변수 목록은 원래 방법과 같아야 합니다.
덮어쓰기 방법은 원래 방법보다 접근성이 떨어질 수 없습니다. 즉, 접근 권한을 줄일 수 없습니다.
덮어쓰기 방법은 원래 방법보다 더 많은 이상을 던질 수 없습니다.
덮어쓰는 방법은final 형식이 될 수 없습니다.final 수식하는 방법은 덮어쓸 수 없기 때문입니다.
덮어쓰는 방법은private가 될 수 없습니다. 그렇지 않으면 하위 클래스에서 새로운 방법이 정의되었을 뿐, 덮어쓰지 않았습니다.
덮어쓰는 방법은static이 될 수 없습니다.만약에 부류 중의 방법이 정태적이고 자류 중의 방법이 정태적이지 않지만 두 가지 방법이 이 점을 제외하고 모두 덮어쓰기 조건을 만족시키면 컴파일 오류가 발생할 수 있다.반대로도 마찬가지다.부모 클래스와 하위 클래스의 방법이 정적이며 덮어쓰기 조건을 충족시키더라도 덮어쓰기는 일어나지 않습니다. 정적 방법은 컴파일할 때 정적 방법과 클래스의 인용 형식을 일치시키기 때문입니다.
메서드 재부팅:
앞에서 Java 방법 재부팅에 대해 설명했습니다. 여기서 다시 한 번 강조하자면 Java 부류와 자류의 방법은 모두 재부팅에 참여할 것입니다. 예를 들어 부류 중의 한 방법은func(){...}입니다.하위 클래스 중 하나는func (int i) {...},방법의 중량을 구성했다.
덮어쓰기와 재부팅의 차이점:
방법 덮어쓰기는 매개 변수 목록이 일치해야 하고, 방법 재부팅은 매개 변수 목록이 일치하지 않아야 합니다.
방법 덮어쓰기 요구 반환 형식은 일치해야 합니다. 방법 재부팅에 대한 요구가 없습니다.
방법 덮어쓰기는 하위 클래스에서만 상위 클래스를 덮어쓰는 방법에 사용할 수 있으며, 방법은 같은 클래스의 모든 방법에 다시 불러옵니다. (부자 클래스에서 계승된 방법을 포함합니다.)
방법은 방법의 접근 권한과 던지는 이상에 대해 특수한 요구를 덮어쓰지만, 방법은 이 방면에 아무런 제한이 없다.
부류의 한 방법은 이불류만 한 번 덮을 수 있고, 한 방법은 모든 종류에서 여러 번 다시 적재될 수 있다.

좋은 웹페이지 즐겨찾기