cf) 오라클 삭제시는 레지스트리까지 지워야 함
1. 프로그램추가삭제가서 지우고, 껐다 키기
2. regedit(인터넷검색) 삭제까지
부모 new부모x -> 자식클래스로 캐스팅 건다
cf)클래스도 자료형: String, System, Character 등
<상속의 원리이해>
(new는 필수지만) 객체가 많아지는게 불편하다?! 객체명과 메소드 체크 불편!!!
===> 객체를 1개로 통일 (다형성) --->부모클래스 - > 결합도 50%정도 낮춘 것!!
===> 메소드도 1개로 통일 ---> 추상클래스(오버라이딩) : 부모에다가 추상클래스 만들고 자식들이 오버라이드 하는 방식
<interface>
인터페이스가없다면?! 클래스끼리 연결연결 상속 연결 해야하니까?
인터페이스하나에 여러개 클래스를 붙일 수 있으니까~~~~
인터페이스들이 하나의 클래스의 부모가 된다
★=> 클래스는 많은 인터페이스부모들을 가질 수 있다.
대신 인터페이스는 다 구현을 해줘야하고...!!
클래스상속시에는 그런게 없다
인터페이스는 백과사전처럼
클래스는 다 떠먹여주는
(is~a 관계):~이다, 하지만 완벽한 상속이아니고 상속처럼(짝퉁)이다!
실제가 없고 전부 비슷하게 만들어놓은 틀일 뿐
상속이 아니다 => 다 재구현 필요
1. 표준명세서의 역활
2. 상수와 추상메소드만 존재
static final는 생략가능 (무조건 들어가 있는 것이다!)
abstract는 생략가능
3. interface를 implements 한 클래스는 반드시 추상메소드를 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 문 넣는다.
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가 생략된 것
'JAVA' 카테고리의 다른 글
210812(목) 자바 17일차 - KeyListener /패키지 /접근제한자 (0) | 2021.08.12 |
---|---|
210811(수) 자바 16일차 - 예제풀어주심: 캘린더, 계산기1차, + Login(프레임 사용 예제) (0) | 2021.08.11 |
210806(금) 자바 14일차 - 상속(Object, 추상클래스, 날짜같은거) (0) | 2021.08.06 |
210805(목) 자바 13일차 - 상속(클래스형변환 , instanceof, Frame) / 색 / final(상수화) (0) | 2021.08.05 |
210804(수) 자바 12일차 - 상속(개념, 오버라이드, 결합도, Object) (0) | 2021.08.04 |