하위 클래스를 작성할 때에도 멤버 변수를 선언할 수 있습니다. 특별한 경우는 선언된 멤버 변수의 이름이 상위 클래스에서 상속된 멤버 변수의 이름과 동일하고 선언된 유형이 다를 수 있다는 것입니다. 경우 하위 클래스는 상속된 멤버 변수를 숨깁니다.
상속받은 멤버변수를 숨기는 서브클래스의 특징은 다음과 같습니다.
(1) 서브클래스 자체에서 정의한 서브클래스 객체와 메소드는 서브클래스에서 재선언한 멤버변수를 참조하여 부모 클래스와 동일한 이름의 멤버변수를 동작시킨다.
(2) 하위 클래스 객체는 상위 클래스에서 상속된 메서드를 호출하여 하위 클래스에 숨겨진 멤버 변수를 작동할 수 있습니다. 즉, 하위 클래스에서 상속된 메서드에 의해 작동되는 멤버 변수는 하위 클래스에서 상속되거나 숨겨진 멤버 변수여야 합니다.
알아채다:
하위 클래스에서 상속된 메서드는 하위 클래스의 상속된 멤버 변수와 숨겨진 멤버 변수에서만 작동할 수 있습니다. 하위 클래스에서 새로 정의한 메서드는 하위 클래스에서 상속하고 하위 클래스에서 새로 선언한 멤버 변수에 대해 작동할 수 있지만, 하위 클래스에 의해 숨겨진 멤버 변수에 대해서는 작동할 수 없습니다.
서브클래스는 상속된 메서드를 재정의하여 숨길 수 있습니다. 메서드 재정의를 메서드 재정의라고도 합니다. 하위 클래스가 상위 클래스의 메서드를 상속할 수 있는 경우 하위 클래스는 이 메서드를 재정의할 수 있는 권한을 갖습니다. 메소드 오버라이딩(Method Overriding)은 하위 클래스에 메소드를 정의하는 것을 의미하며, 이 메소드의 유형은 상위 클래스의 메소드 유형 또는 상위 클래스의 메소드 유형의 하위 유형 및 메소드 이름과 일치합니다. 매개변수 개수, 매개변수 유형, 상위 클래스의 메서드는 완전히 동일합니다. 서브클래스에 의해 이렇게 정의된 메서드를 서브클래스에 의해 재정의된 메서드라고 하며 새로운 메서드는 아닙니다.
하위 클래스는 메서드 재작성을 통해 상속된 메서드를 숨길 수 있고 상위 클래스의 상태와 동작을 자신의 것으로 변경할 수 있습니다. 부모 클래스의 메서드 f()가 자식 클래스에 상속될 수 있는 경우 자식 클래스는 f()를 재정의할 수 있는 권한을 가집니다. 자식 클래스가 부모 클래스의 메서드 f()를 재정의하면 상속된 메서드 f()는 숨겨집니다. 그런 다음 하위 클래스는 f()를 재정의할 수 있는 권한을 갖습니다. 클래스 개체가 f() 메서드를 호출하면 재정의된 메서드 f()를 호출해야 합니다. 하위 클래스가 상위 클래스의 메서드 f()를 재정의하지 않고 상속하는 경우 물론 하위 클래스에서 생성된 객체는 f() 메서드를 호출할 수 있지만 f() 메서드에서 생성된 동작은 다음과 같습니다. 부모 클래스의 것.
오버라이드된 메서드는 상속받은 멤버 변수를 연산하고 상속된 메서드를 호출할 수 있을 뿐만 아니라, 서브클래스의 새로 선언된 멤버 변수를 연산하고 새로 정의된 다른 메서드를 호출할 수 있지만, 서브클래스에 숨겨진 멤버 변수와 메서드를 연산할 수는 없습니다. 하위 클래스가 숨겨진 메서드나 멤버 변수를 사용하려면 super 키워드를 사용해야 합니다.
알아채다:
상위 클래스의 메서드를 재정의하는 경우 메서드의 액세스 권한을 줄일 수는 없지만 액세스 권한을 늘릴 수는 있습니다. 액세스 제한 수정자의 높은 액세스 권한 순은 공개, 보호, 친숙함입니다. 사적인. 예를 들어, 하위 클래스는 상위 클래스의 메소드 f를 대체합니다. 상위 클래스에서 이 메소드의 액세스 권한은 하위 클래스가 대체되는 경우 보호 수준보다 낮을 수 없습니다.