4.22 네스트된 클래스

2525 단어 중첩 클래스
네스트된 클래스는 다음과 같습니다.
1. 정적 구성원 플러그인 클래스: 외부 클래스로 볼 수 있는 정적 방법으로 외부 클래스에 접근할 수 있는 정적 속성과 방법.
 
2. 구성원 플러그인 클래스: 외부 클래스로 볼 수 있는 구성원 방법으로 외부 클래스의 모든 구성원 속성과 방법에 접근할 수 있다.구성원 중첩 클래스의 객체는 외부 클래스의 객체와 연관되며, 다음과 같이 연관됩니다(구성원 중첩 클래스는 Outer.this를 통해 연관된 외부 클래스 객체에 액세스할 수 있습니다).
 
Outer.Inner inner=new Outer().new Inner();

 
 
3. 익명 플러그인 클래스: 외부 클래스로 볼 수 있는 국부 변수, 외부 클래스의 모든 구성원 속성과 방법에 접근할 수 있고final로 수식된 국부 변수
 
4. 부분 플러그인 클래스: 익명 플러그인 클래스와
 
사용 지침:
1. 플러그인 클래스가 외부 클래스 대상에 접근할 필요가 없다면 정적 구성원 플러그인 클래스를 사용하여 GC가 제때에 회수할 수 있도록 해야 한다.
 
2. 외부 클래스의 방법에 상응하는 유형이 존재하면 익명 플러그인 클래스를 우선적으로 사용해야 한다
 
3. 익명 플러그인 클래스와 국부 플러그인 클래스는 비교적 적은 코드량을 유지해야 한다
 
4.public,protected 수식 플러그인 종류를 조심스럽게 사용
 
사용 예:
1. 정적 구성원 플러그인 클래스는 도움말 클래스로 사용 가능
public class Layout {
	private LayoutParams layoutParams;
	
	public LayoutParams getLayoutParams() {
		return layoutParams;
	}

	public void setLayoutParams(LayoutParams layoutParams) {
		this.layoutParams = layoutParams;
	}


	// 
	public static class LayoutParams{
		private int width;
		private int height;
		
		// 
		public static int MATCH_PARENT=-1;
		public static int WRAP_CONTENT=-2;
		
		public LayoutParams(int width,int height){
			this.width=width;
			this.height=height;
		}
	}
}

 
2. 구성원 플러그인 클래스를 사용하여 여러 인터페이스 구현
interface Singer{
	void sing();
}

interface SongWriter{
	void write();
}

//Person 
public class Person implements Singer,SongWriter{
	private String name;
	private Singer singer;
	private SongWriter songWriter;
	
	public Person(String name){
		this.name=name;
		this.singer=new SingerImpl();
		this.songWriter=new SongWriterImpl();
	}
	
	public void sing() {
		singer.sing();
	}
	
	public void write() {
		songWriter.write();
	}	
	
	private class SingerImpl implements Singer{
		public void sing() {
			System.out.println(name+"is singing!!!");
		}
	}
	
	private class SongWriterImpl implements SongWriter{
		public void write() {
			System.out.println(name+"is writing!!!");
		}
	}
	
}

 
 
 

좋은 웹페이지 즐겨찾기