2016.08.12. Fri. 열 번째 수업
Javaの授業が2週間経った!マジあっという間だね〜なんか知りたいことがあったら他のことができない人だから、何時間かかってもいろいろやってみる性格でやっとプログラミングの基本的なことを理解してきたと思う。Javaに夢中して資格の勉強はあんまりやっていないのは問題だけど、試験ってなんとかなるやつだな〜笑 って言いながら、今日から3連休なのに資格の勉強に夢中します!試験が来週だから!!
오늘의 수업 내용
- Abstract class(추상클래스)의 이해
- Anonymous class(익명클래스): WindowListener를 이용해 창닫기 구현(익명클래스 및 외부클래스)
- Interface(인터페이스)의 이해
☞abstract class는 Anonymous class로 바디({})를 구현해 주면 된다.
☞생성자가 존재해야한다. (프로그래머가 생성자를 작성하지 않으면 컴파일시 default 생성자가 작동 작성됨.
예제
package com.javalesson.ch08abstract;
abstract class A{
A(){}
abstract public void a();//abstract method는 바디({})를 가질 수 없다.
public void b(){
}//b end
}//class A end
class B extends A{
//The type B must implements the inherited abstract method A.a()
@Override
public void a() {
}//<-implements(구현) 바디({})를 작성하라는 의미(뼈대에 살을 붙힌다.)
//public void a()<-뼈대(설계), {}<-살(객체)
}//class B end
public class L01Abstract {
public static void main(String[] args) {
B b = new B();
b.a();
A a = new A(){
public void a(){}
};
}//main end
}//class end
2. Anonymous class(익명클래스):
WindowListener를 이용해 창닫기 구현(익명클래스 및 외부클래스)
Frame을 extends해서 frame을 생성 후 Listener abstract class를
Anonymous class & 외부 클래스를 이용해서 창닫기를 구현한다.
※ Listener Class
☞ event가 발생하는 것을 대기하면 감지하는 클래스
※Adapter abstract class는 interface로 anonymous class 작성시 작성하지 않을 method들을
구현하는 번거로운 일을 막기위해 보조 해주는 보조클래스이다.
예제.
package com.javalesson.ch08abstract;
import java.awt.Frame;
import java.awt.event.*;
class FrameDemo extends Frame{
public FrameDemo(){
super("Anonymous Class");
this.setBounds(300, 200, 600, 400);
this.setVisible(true);
this.addWindowListener(new EventHandler());//외부클래스 호출
** Anonymous class **
// this.addWindowListener(new WindowAdapter(){
// public void windowClosing(WindowEvent e){
//e.getWindow().setVisible(false);//화면만 끈다(ex.메센져)
//e.getWindow().dispose();//메모리를 제거 (1~2초후 자동종료)
// System.exit(0);//프로그램 강제종료
// }
// }); //Anonymous class end//
}//생성자 end
}//class end
class EventHandler implements WindowListener{
public void windowClosing(WindowEvent e){
e.getWindow().dispose();
}
@Override
public void windowOpened(WindowEvent e) {}
@Override
public void windowClosed(WindowEvent e) {}
@Override
public void windowIconified(WindowEvent e) {}
@Override
public void windowDeiconified(WindowEvent e) {}
@Override
public void windowActivated(WindowEvent e) {}
@Override
public void windowDeactivated(WindowEvent e) {}
}//class end
public class L02AnonymousClass {
public static void main(String[] args){
new FrameDemo();
}//main end
}//class end
3. Interface(인터페이스)의 이해
예제를 만들어서 interface에 대해 이해하자
객체 new A()를 method a(), b() 호출하는 용도로 사용할 것이다.
이때 객체 new A()의 데이터타입으로 사용될 interface는? interface I
※ 서로 다른 interface class에 속해 있어도 함수 형태가 완전 똑같으면 동일 함수이다.
이때 사용되는 것은 첫 번째 클래스의 함수가 사용된다.
예제.
package com.javalesson.ch09interface;
interface I{
abstract void a();
void b();//type b() 앞에abstract가 생략되어 있다.
//interface class 안의 모든 함수는 abstract이다.
}//class I end
interface I2{
void c();
void d();
}//class I2 end
interface I3{
void a();
void c();
}//class I3 end
class A implements I,I2{
@Override
public void a() {System.out.println("I.a()호출"); }
@Override
public void b() {System.out.println("I.b()호출");}
@Override
public void c() {System.out.println("I.c()호출");}
@Override
public void d() {System.out.println("I.d()호출");}
}//class A end
class B implements I,I2,I3{
@Override
public void a() {System.out.println("I.a()호출"); }
@Override
public void b() {System.out.println("I.b()호출");}
@Override
public void c() {System.out.println("I.c()호출");}
@Override
public void d() {System.out.println("I.d()호출");}
}//class B end
public class L01Interface {
public static void main(String[] args){
I a = new A();
a.a();
a.b();
}//main end
}//class end
'IT story > Java' 카테고리의 다른 글
D+12 Equals & Access(접근지정자) (0) | 2016.08.18 |
---|---|
D+11 Object, toString, hashCode (0) | 2016.08.17 |
D+9 Extends (상속) Animal예제, Frame예제. (0) | 2016.08.11 |
D+8 class(overload, Calculator 출력, scope) (0) | 2016.08.10 |
D+7 Method(함수) main method 설명, Login창 만들기(multi parameter) (0) | 2016.08.09 |