12. GUI 이벤트처리및 객체형변환-> 창(2)+생성자배치(1)+배치관리자(4)+->이벤트처리(4) =>7장(중첩클래스)->6장.다형성(객체형변환)
과제풀이)->강사님
Shape(추상클래스)->사각형의 면적, Drawable(인터페이스)->원의 면적
ShapeTest.java로 저장할것
도형(원, 삼각형, 직사각형….)
실행결과)
원하시는 도형을 선택? 1.원 2. 사각형 3.종료
1
원의 반지름? 3 -> 3*3*3.14
최종 원의 면적은 ?
원하시는 도형을 선택? 1.원 2. 사각형 3.종료
가로? 5
세로? 4
최종 사각형의 면적은? 20
원하시는 도형을 선택? 1.원 2. 사각형 3.종료
3
정상적으로 프로그램이 종료됩니다.
Ex) Shape.java(추상클래스)
Ex) Drawable(원의 면적)
Ex) ShapeTest.java(추상, 인터페이스를 상속받아서 작성)
전체 프로그램
추상
인터페이스->간결한 기능
Ex) 늑대인간 => 인간+늑대의 기능+뱀파이어
class human + interfasce 늑대
● 이벤트처리(Event)
=> 운영체제가 인식가능한 사용자들의 모든 행동양식(키보드작업, 마우스작업, 터치이벤트)
이벤트소스 대상자 이벤트 발생종류 이벤트핸들러
이벤트이름+Listener
대상자 ActionListener
버튼click ActionEvent->메서지큐
메뉴클릭 처리메서드
입력->엔터 actionPerformed
객체명.메서드명(~)
콜백메서드 -> 운영체제가 알아서 호출해주는 메서드(생성자랑 비슷한 의미)
Ex) WindowTest.java(BorderLayout)
Ex) ButtonTest.java((1)이벤트발생 -> 자기클래스(self)->일반)
(GridLayout, ActionListener, actionPerformed,getActionCommand())
Ex) ButtonTest2.java((2)이벤트발생-> 다른 클래스가 처리(외부클래스))
※ 이벤트 감지
1. ~XXXXXListener(인터페이스) ActionListener
2. ~XXXXXAdapter(클래스) ActionAdapter
이벤트 처리방법

(3) 이벤트발생-> 다른 클래스가 처리(내부클래스의 이름이 있는 경우)
Ex) ButtonTest3.java
ButtonTest3.class
ButtonTest3$MyOuter.class
ButtonTest3$내부클래스명.class

(4) 이벤트발생-> 다른 클래스가 처리(내부클래스의 이름이 없는 경우)
Ex) ButtonTest4.java(Annonymous)
ButtonTest4.class
ButtonTest4$1.class=> 이름이 없는 경우(번호)
● 내부클래스(7장)와 객체형변환(6장)
1. 접근지정자를 신경쓰지 않고 편하게 외부의, 내부의 클래스 객체를 생성
-> 메서드호출
2. 이벤트처리를 하기위해서 내부클래스를 사용
중첩 클래스(Nested class)
♦ Inner class
Ex) Outer.java(Member Inner, Local Inner , static Inner)
♦ 자바의 형변환
1.2장(기본형형변환)——>자동형변환
byte->short->int->long->float->double
<———————–(int)5.6
객체형변환-> 상속
정의)
자식클래스의 객체가 부모클래스형으로 형변환될때는 자동형변환
<–>부모클래스의 객체는 반드시 자식클래스의 객체로 형변환되기위해서는
(자식클래스형)을 써줘야 된다.
도형(Shape)-> 원,점,삼각형,직사각형
(1,2) 물
| (Point)
– Point(점)(1,2) +(3,4)-> 종이컵에 든 물
|
Line(선)(1,2,3,4)+(5,6)-> 1.5.리터물
|
Square(다각형)(1,2,3,4,5,6)+(7,8)->생수통
Ex) ShapeTest2.java
♦ 다형성
-> 같은메서드를 쓰지만 호출되는것은 다양하게 표현
instanceof => 객체가 특정 부모로부터 만들어졌는지 확인시켜주는 연산자
형식) 객체명 instanceof 부모클래스명=>true(반환값)
Ex) tico instanceof Car => Car tico = new Car();
=====================================
Employee(부모)-> 직원
|
Manager(팀장), Enginner(전문기술자)
Employee(부) Manager(자)
//자동형변환
Employee e = new Employee();
Employee e2 = new Manager();
Employee e3 = new Engineer();
//
Manager m = (Manager)new Employee();
팀장 일반직원
Engineer e = (Engineer)new Employee();
팀장 일반직원
Ex)Ex06_8.java
=>다음시간 -> 예외처리, 입출력