반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Daemon()
- 동기화
- InputDialog
- Linux셋팅
- sleep()메소드
- String char[] 형변환
- 스레드그룸
- include지시자
- 메모리스트림
- include 지시자
- isinterrupted()
- MemoryStream
- char[] String 형변환
- StringReader
- include액션태그
- 상관 서브 쿼리
- StringWriter
- interrupt()
- ThreadGroup()
- ID중복
- 표현 언어
- Linux세팅
- 상관서브쿼리
- first-child
- ObjectInputStream
- 리눅스세팅
- 아이디중복
- first-of-child
- interrupted()
- 리눅스셋팅
Archives
- Today
- Total
다연이네
[days17] 인터페이스, 익명클래스 본문
반응형
인터페이스
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