자바기초(익명클래스)

bitna's study note·2022년 4월 27일
0

자바

목록 보기
59/119

4월 27일 내용정리

1.익명 클래스(Anonymous class)
부모클래스명 참조변수 = new 부모클래스명(){자식클래스의 내용};
한마디로 자식클래스를 따로 만들지 않겠다.

2.보통은 부모클래스만들고 자식클래스를 만들어 상속받고-> 다형성하여 객체생성 이걸 한줄로 편하게 만든것
부모클래스명 참조변수 = new 부모클래스명(){자식클래스의 내용선언};
이때 자식클래스의 이름이 없어서 생성자또한 없기때문에
부모로 형변환 하여 부모생성자를 가져다 사용하며, 단 1회성으로 사용할때 익명클래스를 쓴다.

3.보통은 부모인터페이스를만들고 자식클래스를 만들어 상속받고-> 다형성하여 객체생성
이걸 한줄로 편하게 만든것
부모인터페이스 참조변수 = new 인터페이스(){자식클래스의 내용선언};
이때 자식클래스의 이름이 없어서 생성자또한 없기때문에
부모로 형변환 하여 부모생성자를 가져다 사용하며, 단 1회성으로 사용할때 익명클래스를 쓴다.

4.익명클래스는 매개값으로 넘겨줄수도 있다.

부모클래스

package study_0427;

public class Bird {
	void move() { //메서드 선언
		System.out.println("새가 움직인다.");
	}

}

익명클래스-1

package study_0427;

public class Anonymous1Demo {//익명클래스의 외부클래스
	Bird e =new Bird() { //자식클래스의 내용적음
		
			public void move() { //자식클래스의 메서드-1
				System.out.println("독수리가 난다~~");
			}
			
			public void sound() {//자식클래스의 메서드-2
				System.out.println("휘익~~~");
			}
		};
		
        //메인메서드
		public static void main(String[] args) {
        
        //익명클래스의 외부클래스의 객체 생성
			Anonymous1Demo a= new Anonymous1Demo();
            
       //메서드 호출
			a.e.move();
		}

}

익명클래스-2

package study_0427;

public class LocalDemo {

	public static void main(String[] args) {
		
		class Eagle extends Bird{ //상속받은 내부 클래스
			
			public void move() { //내부클래스 메서드
				System.out.println("독수리가 난다~~");
			}
			
		}
		
		Bird e = new Eagle();
		e.move();
//=============================================================
		Bird b= new Bird() {
			
			public void move() {
				System.out.println("독수리가 난다~~");
			}
		};
		b.move();
//=============================================================
		new Bird() {
			public void move() {
				System.out.println("독수리가 난다~~");
			}	
		}.move(); //b.move(); 와 같은 의미 임, 다만 객체를 변수에 담는 과정이 생략되고 바로 부름
		
	}

}

외.내부클래스 및 비교용 기명클래스

package study_0427;

public class MemberDemo { //외부클래스
	
		class Eagle extends Bird { //상속 클래스 내부클래스
			
			public void move() { //내부클래스의 메서드-1
				System.out.println("독수리가 난다~~");
			}
			
			public void sound() { //내부클래스의 메서드-2
				System.out.println("휘익~~~");
			}
		}
		
		Eagle e =new Eagle(); //자식클래스 객체생성
		
		public static void main(String[] args) {
			
			MemberDemo m = new MemberDemo();//외부클래스 객체생성
			m.e.move(); //외부클래스 주소->자식클래스 주소->move() 메서드호출
			m.e.sound(); //외부클래스 주소->자식클래스 주소->move() 메서드호출
		}

}
profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보