17 내부 클래스 반복

2927 단어
내부 클래스(Inner Class), 내부 클래스는 모두 4가지로 나뉜다.
1 정적 내부 클래스(static inner class):
public static class Inner
	{
		
	}

외부 클래스의 정적 구성원 변수 및 정적 방법에만 액세스할 수 있으며, 정적 내부 클래스 객체를 생성하는 방법은 다음과 같습니다.
OuterClass.InnerClass inner = new OuterClass.InnerClass();
2. 구성원 내부 클래스(member inner class): 외부 클래스의 정적과 비정상적인 방법과 구성원 변수에 접근할 수 있다.구성원 내부 클래스 객체를 생성하는 방법은 다음과 같습니다.
OuterCLass.Inner inner=new OuterCLass().new Inner();

OuterClass.InnerClass inner = new OuterClass().new InnerClass();
4. 부분 내부 클래스에서 외부 클래스의 구성원 변수에 접근하려면 OuterClass를 구문으로 사용합니다.this.a;
lass MemberInner
{
	private int a = 4;
	
	public class Inner2
	{
		private int a = 5;
		
		public void doSomething()
		{
			System.out.println(MemberInner.this.a);
		}
	}
	// 
	public void method()
	{
		Inner2 inner = this.new Inner2();
	}
}

5. 로컬 내부 클래스(Local Inner Class): 메서드에 정의되어 있으며 메서드에 명시된 final 유형의 변수에만 액세스할 수 있습니다.
class LocalInner
{
	public void doSomething()
	{
		final int a = 4;
		
		class Inner3
		{
			public void test()
			{
				System.out.println(a);
			}
		}
		
		new Inner3().test();
	}
}



public class LocalInnerClassTest
{
	public static void main(String[] args)
	{
		LocalInner localInner = new LocalInner();
		
		localInner.doSomething();
		
	
	}
}

6. 익명 내부 클래스(Anonymous Inner Class): 익명 내부 클래스는 부모 클래스를 은밀하게 상속하거나 인터페이스를 실현합니다.
AnonymousInnerClassTest test = new AnonymousInnerClassTest();
		//  
		String str = test.get(new Date()
		{ 
			public String toLocaleString()
			{
				return "hello world";
			}
		});
		
		System.out.println(str);

스윙에 사용되는 익명 내부 클래스의 일반적인 방법:
public static void main(String[] args)
	{
		JFrame frame = new JFrame("JFrame");
		
		JButton button = new JButton("click me");
		
		button.addActionListener(new ActionListener()
		{
			@Override
			public void actionPerformed(ActionEvent e)
			{
				System.out.println("welcome");
			}
		});
		
		frame.setSize(200, 200);
		
		frame.getContentPane().add(button);
		
		frame.addWindowListener(new WindowAdapter()
		{
			@Override
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		});
		
		
		
		frame.setVisible(true);
		
	}

7. 이른바 귀속(Recursion)이란 방법이 자신을 호출하는 것이다.귀환에 대해 말하자면 반드시 하나의 출구가 있어서 귀환을 끝내게 해야 비로소 사순환이 나타나지 않도록 보장할 수 있다.
public static int compute(int f)
	{
		if (f>1)
		{
			return f*compute(--f);
		}
		else {
			return 1;
		}
	}
public static void DeleteAll(File file  )
	{
		if (file.isFile()||file.list().length==0)
		{
			file.delete();
		}
		else {
			File []files=file.listFiles();
			for (File file2 :files)
			{
				DeleteAll(file2);
			}
			file.delete();
		}
		
		
	}

좋은 웹페이지 즐겨찾기