JAVA에서 클래스 상속 차단(공식 및 비공식)
2592 단어 계승
JAVA 언어에서 제공하는 키워드 "FINAL"을 사용하여 작업을 수행할 수 있습니다.다음 소스 코드 범례를 살펴보십시오.
//FinalDemo.java
public final class FinalDemo {
}
다음은 위에서 설명한 클래스를 계승할 또 다른 클래스를 만듭니다.JAVA 언어에서 제공하는 "EXTENDS"키워드는 하나의 클래스를 기존의 클래스로 계승할 수 있습니다.
//FinalDemo2.java
public class FinalDemo2 extends FinalDemo {
}
첫 번째 클래스를 컴파일한 후에 두 번째 클래스를 컴파일하면 JDK 컴파일러가 오류를 보고하면 다음 오류 정보를 얻을 수 있습니다.FinalDemo2.java:1: cannot inherit from final FinalDemo public class FinalDemo2 extends FinalDemo{} ^ 1 error
현재, 당신은 이미 공식적인 방법을 통해 첫 번째 클래스가 다른 클래스에 의해 계승되는 것을 막는 데 성공했다.
비공식적 방법
그러나 클래스가 다른 클래스에 계승되는 것을 막는 방법도 유일한 것은 아니다.다음 코드를 고려하여 구조 방법이 개인 (private) 임을 설명했고, 정적 방법 (static method) 을 설명하여 클래스 대상을 되돌려 주었다.
public class PrivateTest{
private PrivateTest(){
System.out.println("Private Default Constructor");
}
public static PrivateTest getInstance(){
return new PrivateTest();
}
}
위에서 수정된 코드는 "Singleton 모드"라고 불리며, get Instance 방법은 항상 이 종류의 실례만 되돌려줍니다.그런데 왜 이 코드가 클래스의 계승을 막았을까?아래의 코드를 고려하면 성명된 클래스는 위의 클래스를 계승할 수 있을 것이다.public class PrivateTest2 extends PrivateTest{
}
첫 번째 클래스를 컴파일한 후에 두 번째 클래스를 컴파일하면 JDK 컴파일러가 오류를 보고하면 다음 오류 정보를 얻을 수 있습니다.
PrivateTest2.java:1: PrivateTest() has private access in PrivateTest public class PrivateTest2 extends PrivateTest{ ^ 1 error
두 번째 클래스는 첫 번째 클래스를 계승할 수 없습니다.그런데 힌트가 틀렸다는 뜻은 뭘까요?JAVA 언어는 하나의 클래스에서 최소한 하나의 구성 요소 방법을 제공해야 한다.만약 위젯 방법을 제공하지 않았다면, JDK는 성명된 클래스에 기본 위젯 방법을 삽입할 것입니다.기본값은 매개 변수, 빈 구성 요소, 공공 (public) 접근 권한이 없는 구성 요소 방법입니다.그러나 만약 당신이 구성 요소 방법을 정의한다면, JDK 컴파일러는 이렇게 기본적인 구성 요소 방법을 삽입하지 않을 것이다.우리는 방금 Private Test 클래스에서 기본적인 구성 요소 방법을 설명했지만, 기본적인public 접근 권한을private 권한으로 바꾸었습니다. 이것은 모두 JDK 컴파일러 문법 검사의 규칙에 부합됩니다.
이제 두 번째 부서를 봅시다.JAVA 언어도 구성 요소 방법의 첫 줄에서 (call) 슈퍼 클래스 (superclass) 구성 요소를 호출해야 한다고 요구합니다.이것은 상속 피쳐를 시작하는 데 필요한 것입니다.JAVA에서, 우리는 슈퍼 () 방법을 호출해서 이 임무를 완성합니다. 이것은 초클래스 구성 요소 방법에 비추게 됩니다.만약 초클래스에 기본적인 구조 방법을 제공하지 않았다면, JDK 컴파일러는 호출하기 위해 기본 초클래스 구성 요소를 삽입할 것입니다.
우리는 방금 첫 번째 클래스에서 구조기를private의 권한으로 성명했다.현재, 우리가 다른 클래스에서 이 클래스를 계승할 때, 컴파일러는 기본적인 초클래스 구성 요소를 호출하는 방법을 시도할 것이다.클래스 범위 내의 구성 요소 방법은private 권한으로 표시되기 때문에, 컴파일러는 클래스 구성 요소 방법을 호출할 수 없다고 오류를 보고합니다.그래서 우리는 비공식적인 방법을 통해 한 종류가 다른 종류에 의해 계승되는 것을 막았다.
Usman Saleem Mohammad Ali Jinnah University E-mail: [email protected]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C++/java 계승 클래스의 다태적 상세 및 실례 코드C++/java 계승 클래스의 다태적 상세 정보 C++와 자바를 배운 사람들은 모두 알고 있다. 그들 둘은 모두 대상을 대상으로 프로그래밍을 할 수 있기 때문에 대상을 대상으로 프로그래밍하는 세 가지 특성은 바로 봉...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.