정상적인 상황에서는 정적 수정 클래스를 사용할 수 없습니다. 클래스를 수정하기 위해 정적을 사용해야하는 경우 정적은 일반적으로 익명의 내부 클래스를 수정합니다.
멤버 내부 클래스라고 불리는 한 클래스에서 다른 클래스를 만듭니다. 이 멤버 내부 클래스는 정적 (정적 키워드 수정 사용)이거나 비 정적 일 수 있습니다. 정적 내부 클래스는 정의 및 사용할 때 다양한 제한 사항이 있기 때문입니다. 따라서 실제 작업에는별로 사용되지 않습니다.
개발 과정에서 가장 일반적인 내부 클래스는 전적으로 구성된 멤버 인 내부 클래스에서 사용됩니다. 그러나 특정한 경우 정적 내부 클래스도 고유 한 역할을 수행 할 수 있습니다.
1. 정적 내부 클래스 사용의 목적.
내부 클래스를 정의 할 때 권한 수정 자 정적으로 접두사를 접두사 할 수 있습니다. 이 시점 에서이 내부 클래스는 정적 내부 클래스가됩니다. 그러나 사용 제한 및 기타 요인과 같은 여러 가지 이유로 인해 (특정 사용 제한 사항은 다음 내용에서는 자세히 설명되어 있음) 실제 작업에 사용되는 사람은 많지 않습니다. 그러나 그것이 가치가 없다는 것을 의미하지는 않습니다. 일부 특별한 경우에는이 정적 내부 클래스가 부족할 수 없습니다. 예를 들어, 코드 프로그램 테스트를 수행 할 때, 각 Java 소스 파일에 기본 메소드가 설정된 경우 (주 메소드는 특정 응용 프로그램의 입장이고 있어야 함) 많은 추가 코드가 나타납니다. 그리고 가장 중요한 것은이 메인 프로그램의 코드가 Java 파일의 형식 일 뿐이며이 기본 메소드 자체가 필요하지 않다는 것입니다. 그러나이 주요 방법 없이는 절대 불가능합니다. 이 경우 기본 메소드는 정적 내부 클래스에 기록 될 수 있으므로 각 Java 소스 파일에 대해 유사한 기본 메소드를 설정할 필요가 없습니다. 이것은 코드 테스트에 매우 유용합니다. 일부 중간 및 대규모 응용 프로그램 개발에서는 일반적으로 사용되는 기술적 수단입니다. 이러한 이유로이 정적 내부 클래스는 일반적으로 사용되지는 않지만 프로그램 개발자도 마스터해야합니다. 아마도 중요한 순간에도 여전히 큰 역할을 할 수 있습니다.
public class mainStaticclass {static class main {static void main () {// 주요 메소드를 정적 내부 클래스에 쓰기하므로 각 소스 파일에 대한 이런 종류의 기본 메소드를 가질 필요가 없습니다. new MainInstaticClass (). print ()} public static void main (string) {new MainStaticClass (); print ();}; print () {systation.out.println ( "정적 내부 클래스의 메인");}} public class testmain {public static void main (string [] args) {// todo auto-a-auto-renated method stub // new mainStaticclass (). print (); mainstaticclass.main.main (); mainstatic class.main ();2. 정적 내부 클래스 사용에 대한 제한.
내부 클래스를 정적 클래스로 정의하는 것은 기본적으로 다른 클래스를 정적 클래스로 정의하는 것과 동일하며 참조 규칙은 기본적으로 동일합니다. 그러나 세부 사항은 여전히 매우 다릅니다. 특히, 모든 프로그램 개발자의 관심을 끌기위한 다음과 같은 영역이 있습니다.
하나는 정적 멤버의 정의 (정적 변수 및 정적 멤버 포함)입니다. 일반적으로 내부 클래스가 정적 내부 클래스로 정의되지 않은 경우 멤버 변수 또는 멤버 메소드를 정의 할 때 정적 멤버 변수 및 정적 멤버 메소드로 정의 할 수 없습니다. 즉, 정적이 아닌 내부 클래스에서 정적 멤버를 선언 할 수 없습니다. 예를 들어, 내부 수업 연령은 이제 학생 수업에서 정의됩니다. 이 클래스가 정적 키워드로 수정되지 않은 경우, 즉 정적 클래스로 정의되지 않으면이 내부 클래스에서 특정 멤버 메소드 또는 멤버 변수를 수정할 수 없습니다. 컴파일 할 때는 통과 할 수 없습니다. 따라서 프로그램 개발자는 정적 클래스로서 내부 클래스를 수정 하여만이 클래스에서 정적 멤버 변수를 정의 할 수 있고 멤버 메소드를 정의 할 수 있다는 점에 유의해야합니다. 이것은 정적 내부 클래스가 가지고있는 기능입니다. 이러한 이유로이 정적 내부 클래스 없이는 많은 작업이 완료 될 수없는 경우가 정확히 그렇습니다. 또는 특정 사용자의 요구를 달성하기 위해 큰 원을 돌아 다니야합니다. 이것은 또한 정적 내부가 존재하는 중요한 이유입니다.
둘째, 회원 인용에는 비교적 큰 제한이 있습니다. 일반적인 비 정적 내부 클래스는 외부 클래스의 멤버 변수 및 멤버 메소드에 마음대로 액세스 할 수 있습니다. 이러한 멤버 방법이 개인 (개인 회원 변수 또는 방법)으로 수정 되더라도 비 정적 내부 클래스에 마음대로 액세스 할 수 있습니다. 비 정적 내부 클래스의 특권입니다. 다른 클래스에서는 비공개로 정의 된 멤버 변수 또는 메소드가 액세스 할 수 없기 때문입니다. 그러나 내부 클래스가 정적으로 정의되면 외부 클래스의 멤버 메소드 또는 멤버 변수를 사용할 때 많은 제한이 있습니다. 예를 들어, 외부 클래스의 비 정적 멤버 (멤버 변수 및 멤버 메소드 포함)는 정적 내부 클래스의 객체에서 액세스 할 수 없습니다. 이것이 무엇을 의미합니까? 두 변수가 외부 클래스에서 정의되면 하나는 비 정적 변수이고 다른 하나는 정적 변수입니다. 그런 다음 멤버 메소드 내부 또는 다른 곳에서 정적 내부 클래스에서 외부 클래스에서 정적 변수 만 참조 할 수 있으며 비 정적 변수에 액세스 할 수 없습니다. 정적 내부 클래스에서 정적 메소드를 정의 할 수 있으며 (정적 내부 클래스에서 정적 메소드 만 정의 할 수 있음) 외부 클래스의 구성원은 정적 메소드에서 참조 할 수 있습니다. 그러나 내부 클래스가 어디에 있는지에 관계없이 공통점이 있습니다. 즉, 외부 클래스에서 정적 멤버 메소드 또는 멤버 변수 만 참조 할 수 있습니다. 비 정적 멤버 변수 및 멤버 메소드의 경우 정적 내부 클래스에서 액세스 할 수 없습니다. 이것은 정적 내부 클래스의 최대 사용량 제한입니다. 일반적인 비 정적 내부 클래스에는 그러한 제한이 없습니다. 정적 내부 클래스가 특정한 경우에만 사용되기 때문입니다. 응용 프로그램 범위는 비 정적 내부 클래스보다 훨씬 덜 광범위합니다.
셋째, 정적 내부 클래스를 만들 때 정적 내부 클래스의 인스턴스를 외부 클래스의 인스턴스에 바인딩 할 필요가 없습니다.
일반적으로, 클래스에서 멤버 내부 클래스를 작성할 때 필수 조항이 있습니다. 즉, 내부 클래스의 사례는 외부 클래스의 사례에 묶여 있어야합니다. 즉, 내부 클래스를 만들기 전에 먼저 외부 클래스의 새 키워드를 사용 하여이 내부 클래스의 객체를 만들어야합니다. 이 경우 내부 클래스 객체가 외부 클래스에서 초기화되면 내부 클래스 객체가 외부 클래스 객체에 바인딩됩니다. 다시 말해, 일반적인 비 정적 내부 클래스의 객체는 외부 객체에 첨부됩니다. 그러나 회원 개발자가 정적 내부 클래스를 만들면 또 다른 문제입니다. 일반적으로 프로그래머가 정적 내부 클래스를 정의 할 때 외부 클래스의 인스턴스를 정의 할 필요가 없습니다. 즉, 외부 클래스에서 정적 내부 클래스를 정의하려면 새로운 키워드를 사용하여 내부 클래스의 인스턴스를 만들 필요가 없습니다. 즉, 정적 클래스의 내부 객체를 만들 때 외부 클래스의 객체는 필요하지 않습니다.
newMainInStaticClass.Main();
구체적인 이유 때문에 일반적으로 프로그램 개발자는 그렇게 깊이 이해할 필요가 없으며,이 규칙이 있다는 것을 기억하면됩니다. 정적 내부 클래스를 정의 할 때는 추가 돈을 추가하는 실수를하지 마십시오.
위의 분석에서, 우리는 정적 내부 클래스가 여전히 비 정적 내부 클래스와 매우 다르다는 것을 알 수 있습니다. 일반적으로 프로그램 개발자는 비 정적 내부 클래스 개체가 암시 적으로 외부 클래스의 참조를 저장하여이를 생성 한 외부 클래스 객체를 가리키는 것을 이해할 수 있습니다. 이러한 이해에 관계없이 프로그램 개발자는 정적 내부 클래스와 비 정적 내부 클래스의 차이점을 명심해야합니다. 예를 들어, 정적 멤버 방법 및 멤버 변수를 만들 수 있는지 여부 (정적 내부 클래스는 정적 내부 클래스 대신 정적 멤버를 만들 수 있음) 외부 클래스의 구성원에 대한 제한이 외부 클래스의 구성원에 액세스하는 데 대한 제한은 정적 또는 비 정적 외부 클래스 메소드 및 구성원 변수 대신 정적 내부 클래스 대신 외부 클래스에서 정적 멤버 변수 및 멤버 메소드에만 액세스 할 수 있습니다). 이 두 가지 차이점은 정적 내부 클래스와 비 정적 외부 클래스의 가장 큰 차이이며, 정적 내부 클래스가 존재하는 이유이기도합니다. 이 차이를 이해 한 후, 프로그램 개발자는 정적 내부 클래스를 사용해야하는 상황에서 어떤 상황에서도 알아야합니다. 예를 들어, 프로그램 테스트 중에 각 Java 소스 파일에 기본 메소드 코드를 쓰지 않기 위해 기본 메소드는 정적 내부 클래스로 작성하여 코드의 양을 줄이고 코드를보다 간결하게 만들 수 있습니다.
요컨대, 정적 내부 클래스는 Java 언어의 매우 특별한 클래스이며, 일반적인 정적 클래스 및 비 정적 내부 클래스와는 매우 다릅니다. 프로그램 개발자로서, 그들 사이의 차이점을 알고 실제 작업중인 올바른 클래스를 채택해야합니다. 그러나 일반적으로 정적 내부 클래스의 빈도는 그리 높지 않습니다. 그러나 어떤 경우에는이 내부 정적 클래스를 사용할 수 없으면 두 배의 노력으로 결과의 절반에 부정적인 영향을 줄 수 있습니다.
3. 인스턴스화
위의 내용을 읽은 후 전체로 테스트했습니다.
우선, 모든 사람은 정적 내부 클래스가 외부 클래스에 의존하지 않으며 그 안의 변수와 방법이 반드시 정적 인 것은 아니라는 것을 이해해야합니다. 아래 코드에 대해 이야기 해 봅시다.
공개 클래스 테스트 {public static void main (string [] args) {myinnerstaticclass 내부 = new myinnerstaticclass (); 내부 .a = 10; inner.b = "abc"; system.out.println (내부+""+inner.b);} 정적 클래스 myinnerstaticclass {innerstaticclass {}} 공개 클래스 테스트 {public static void main (string [] args) {myinnerstaticclass 내부 = new myinnerstaticclass (); 내부 .a = 10; inner.b = "abc"; system.out.println (내부+""+inner.b);} 정적 클래스 myinnerstaticclass {innerstaticclass {}}위의 코드는 정적 익명 클래스를 새로 인스턴스화하고, 실행 후 10 ABC를 입력하고 올바른!
요약
위는이 기사에서 Java의 정적 클래스에 대한 자세한 설명입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!