728x90

cf) 오라클 삭제시는 레지스트리까지 지워야 함

1. 프로그램추가삭제가서 지우고, 껐다 키기

2. regedit(인터넷검색) 삭제까지

 

부모 new부모x -> 자식클래스로 캐스팅 건다

 

cf)클래스도 자료형: String, System, Character 등

 

<상속의 원리이해>

(new는 필수지만) 객체가 많아지는게 불편하다?! 객체명과 메소드 체크 불편!!!

 

===> 객체를 1개로 통일 (다형성) --->부모클래스 - > 결합도 50%정도 낮춘 것!!

 

===> 메소드도 1개로 통일 ---> 추상클래스(오버라이딩) : 부모에다가 추상클래스 만들고 자식들이 오버라이드 하는 방식

 

 


<interface>

인터페이스가없다면?! 클래스끼리 연결연결 상속 연결 해야하니까?

인터페이스하나에 여러개 클래스를 붙일 수 있으니까~~~~

인터페이스들이 하나의 클래스의 부모가 된다

 

★=> 클래스는 많은 인터페이스부모들을 가질 수 있다.

대신 인터페이스는 다 구현을 해줘야하고...!!

 

클래스상속시에는 그런게 없다

 

인터페이스는 백과사전처럼

클래스는 다 떠먹여주는

 

 

(is~a 관계):~이다, 하지만 완벽한 상속이아니고 상속처럼(짝퉁)이다!

실제가 없고 전부 비슷하게 만들어놓은 틀일 뿐

상속이 아니다 => 다 재구현 필요

 

1. 표준명세서의 역활

 

2. 상수추상메소드만 존재

static final는 생략가능 (무조건 들어가 있는 것이다!)

abstract는 생략가능

 

3. interfaceimplements 한 클래스는 반드시 추상메소드를 Override(재구현)해주어야 한다.

=> implements의 앞에는 클래스가 와야하고 implements의 뒤에는 인터페이스가 와야함

 

4. Override(재구현) 할때 반드시 public를 붙여야 한다.

 

다중상속이 인터페이스에서 가장 중요한 부분같다!!

5. 다중상속이 가능★중요

cf) 인터페이스와 추상클래스랑 헷갈린다 ㅠㅠ 둘이 똑같은 일을 한다는데 뭐가 다른거지?
-> 다중상속(부모클래스가 하나가 아닌 경우) 때문에 인터페이스 이용?!!! 이게 현재 찾아본 결과 추상클래스와 인터페이스의 차이점이다!!! 근데 재구현, 상수랑추상만 포함 가능한 제한적인 면때문에 다중상속일때만 이용하는 듯!

=> 인터페이스 extends 인터페이스, 인터페이스

cf) 클 extends 인 ->X 불가능!! 자료형 맞춰야 함

 

6. 상속과 같이 쓰일때는 extends, implements 순서로 쓴다. (순서바뀌면 안됨)

 

 

[형식]

interface 인터페이스명 {

.....

}

class 클래스명 implements 인터페이스명{

...

}

 

[EX] 맞는 문장을 모두 고르시오

class A{}

interface InterA{}

 

1. class B extends A { } -> 맞음 클,클

2. class B implements InterA { } ->틀림

3. class B implements A { } ->틀림

4. class B extends InterA { } ->틀림

5. interface InterB extends A { }->틀림

6. interface InterB implements InterA { } -> implements의 앞에는 클래스가 와야함, 틀림

7. interface InterB implements A { } ->  implements의 뒤에는 인터페이스가 와야함, 틀림

8. interface InterB extends InterA { } -> 맞음

 

 

-error
1. 재구현
2. 추상(재구현하기 싫다면) -> 자식에게 할일을 미루는 것

 

cf) 클래스>인터페이스 ... 클래스가 더 큰개념??!

자바 클래스는 다중상속이 안된다

자바 인터페이스는 다중상속이 된다

 

cf) 인터페이스에는 상수와 추상밖에 없다

 

cf) java.awt.event의 여러 인터페이스

ActionListener, MouseListener ,WindowListener

awt.event-WindowListener, MouseListener.... 등 여러가지 이벤트 처리

 

cf) awt.event-WindowListener 여러 메소드

windowClosed: 사후처리 메소드 

windowIconified: 최소화 버튼

windowClosing: 닫기 버튼


<Event(이벤트)>

1. Event Source : 누가? 어디서?

2. Event Listener 

cf) 리스너 : 마우스리스너, 키리스너, 액션리스터(버튼처리등)......

리스너가 추상 갖고 있기 때문에 구현부 추상 처리

3. Event Handler(구현부)

 

[형식]

EventSource.addEventListener(EventHandler의 위치)

 

1. implements MouseListener ,WindowListener 해준다

2. 클래스명 밑줄에 추상메소드 오버라이드 누르면 주르륵 생김 -> 전부다 콜백 (일정한 조건이 되면 수행)

3. this.addWindowListener(this); //내가 모든 것을 Override를 했다.. JVM 사건에 맞게 호출 해라!
   this.addMouseListener(this);

   newBtn.addActionListener(this); //newBtn을 누르면 오버라이드메소드들로 넘어감
   exitBtn.addActionListener(this);
//위와 같음

예외 - 4. 두번 부를 경우 이렇게 if 문 넣는다.

area.setText 두번 넣은거는 awt에러날까봐 확실하게 하려고 두번 넣었던 것임.

cf) System.exit(0);//프로그램 강제 종료 0은 그냥 0이다.... 이거는 전체 모든 프로그램 종료!

일부 창만 사라지게 하려면 setVisible(false);써야 한다!

 

cf) 안드로이드는 add->set만 다름

 

cf) 프레임은 보더레이아웃(동서남북)이 이미 지정되어있음 -> 동서남북에는 1개의 Button만 올릴 수 있다

 

cf)

Component(도구)

: 연필, 볼펜...<= Button, TextArea(글씨여러개), TextField(한개씩만)

: 패널도 여기!

 

Container

: 필통 <= Frame, JFrame, Dialog

 

cf) setBounds(900,100,300,400);//창크기 300,400 //this가 생략된 것

 

 

 

728x90

+ Recent posts