일반 내부 클래스
일반 내부 클래스에서 마스터해야 할 두 가지 주요 사항이 있습니다.
부모 클래스에 대한 참조를 보유하므로 어떤 액세스로든 부모 클래스의 변수 및 메서드에 액세스할 수 있습니다. right
내부 클래스는 상위 클래스 외부에 있음 생성 메소드
public class Main{ public static void main(String args[]){ Outer outer = new Outer(); //外部类外部创建内部类 Outer.Inner inner = outer.new Inner(); inner.method(); } } class Outer{ private String value = "OuterValue"; class Inner{ public void method(){ //持有父类引用,可以访问父类private变量value System.out.println(value); } //利用.this关键字,可以返回父类对象引用 public Outer outerObject(){ return Outer.this; } } }
(권장 튜토리얼: java 입문 프로그램)
메서드 내부 클래스
메서드에 직접 정의된 내부 클래스
와 동일한 권한을 누릴 수 있습니다. 외부 클래스의 다른 메서드와 멤버 변수에 액세스할 수 있습니다.
메소드 1.8 이후에는 매개변수를 final로 설정할 필요가 없습니다.
메서드의 로컬 변수와 동일한 권한을 가지며, 앞에 정의된 로컬 변수에 액세스할 수 있습니다
메서드 범위 내에서 메소드의 내부 클래스에만 접근할 수 있습니다.
public class Main{ public static void main(String args[]){ Outer outer = new Outer(); outer.outerMethod("param"); } } class Outer{ public void outerMethod(String value){ class Inner { public void innerMethod(){ //可以访问方法参数 //1.8以后,内部类访问的方法参数不必设置为final System.out.println(value); } } new Inner().innerMethod(); } }
익명 내부 클래스
익명 내부 클래스는 실제로 우리가 자주 사용하는 핵심이자 지식 포인트입니다.
예를 들어, 새 스레드를 생성합니다
public class Main{ public static void main(String args[]){ Thread a = new Thread(new Runnable(){ @Override public void run(){ System.out.println("thread a is running;"); } }); a.start(); } }
위 코드는 Runnable 인터페이스를 구현하는 익명 클래스 객체를 생성한다는 의미이며, 이는 작성 편의성 때문에 두 번째 유형을 자주 사용합니다
.public class Main{ public static void main(String args[]){ Thread a = new Thread(new RunnableImp()); a.start(); } static class RunnableImp implements Runnable{ @Override public void run(){ System.out.println("thread a is running;"); } } }
정적 내부 클래스
다음 두 가지 사항을 기억하세요
정적 내부 클래스 객체를 생성하려면 외부 클래스의 객체가 필요하지 않습니다(일반 내부 클래스에 필요)
비정적 외부 클래스에 접근할 수 없습니다 정적 내부 클래스의 클래스 메서드 또는 멤버 변수
public class Main{ Outer.Inner inner = new Outer.Inner(); } class Outer{ private String ordValue; private static String staValue; static class Inner{ { System.out.println(staValue); //这句编译通不过 //System.out.println(ordValue); } } }
관련 동영상 튜토리얼 추천: java video
위 내용은 Java 내부 클래스에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!