다연이네

[days17] 인터페이스, 익명클래스 본문

Java

[days17] 인터페이스, 익명클래스

 다연  2020. 10. 18. 13:47
반응형

인터페이스 

1. 정의

   - 클래스를 만들기 위한 클래스 계약서

   - 참조형 타입의 한 종류, 자료형 중의 하나

   - 상수(public static final)와 추상메소드(public abstract)만을 가지는 일종의 추상클래스

      (JDK1.8부터 스태틱메소드와 디폴드메소드 추가적으로 선언할 수 있다)

2. 사용 이유

   - 집 주인이 방 개수, 천장 높이, 화장실 개수 등 요구 -> 설계자가 요구사항을 파악하여 도면 작성

   - 자동차회사가 엔진 계약서를 작성해 엔진 회사들에 전달 - > 회사들이 엔진을 만들어 납품 -> 엔진을 자동차에 장착

      (자동차 규격을 만족한다면 아무 회사의 엔진을 장착해도 상관 없음)

3. 선언 형식

   접근지정자 interface 인터페이스명{ //인터페이스명은 I로 시작한다. (자바는 필수x)

      }

4. 장점

   1. 개발 시간 단축
   2. 표준화 가능
   3. 서로 관계 없는 클래스들에게 관계를 맺어줄 수 있음
   4. 독립적인 프로그래밍 가능

 

public interface IEngines {
	//상수와 추상메소드만 가질 수 있다.
	//추상메소드 
	public abstract void moreFuel(int fuel);
	void lessFuel(int fuel);
	void stop();
	
	static void printf() {
		System.out.println("static 메소드도 가능");
	}
	
	default void printf2() {
		System.out.println("default 메소드도 가능");
	}
	
}

익명클래스

 1. 이름이 없는 클래스
 2. 클래스 선언부 + 생성부로 구성
 3. 형식
   new 부모클래스명(){
     부모클래스의 메소드들만 오버라이딩해서 사용할 수 있다.
     @Override
   }
   new 인터페이스(){
     인터페이스가 선언하고 있는 추상메소드만을 오버라이딩에서 사용
    }

public class Ex04_02 {

	public static void main(String[] args) {
		//2. 객체 생성
		new MyForm();
		
		//1,2 동시에 하겠다  
	
		
		System.out.println("=END=");
	}

}

//1. MyForm 클래스 선언 
class MyForm extends Frame{
	public MyForm() {
		this.setSize(400,400);
		//이벤트 처리 -> 익명클래스를 이용해 처리
		this.addWindowListener(   new WindowListener() { //new 치고 한칸 띄고 컨+스
			
			@Override
			public void windowOpened(WindowEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void windowIconified(WindowEvent e) {}
			
			@Override
			public void windowDeiconified(WindowEvent e) {}
			
			@Override
			public void windowDeactivated(WindowEvent e) {}
			
			@Override
			public void windowClosing(WindowEvent e) {
				System.out.println(">종료");
				System.exit(1);
			}
			
			@Override
			public void windowClosed(WindowEvent e) {}
			
			@Override
			public void windowActivated(WindowEvent e) {}
		}
		);
		this.setTitle("익명클래스 설명");
		this.setVisible(true);
	}
}
반응형

'Java' 카테고리의 다른 글

[days18] java.lang 패키지와 유용한 클래스, String의 다양한 메소드  (0) 2020.10.18
[days17] 예외처리 (Exception handling)  (0) 2020.10.18
[days16] 싱글톤패턴  (0) 2020.10.17
[days16] 다형성  (0) 2020.10.17
[days16] final  (0) 2020.10.17
Comments