캡슐화

-은닉성

 

상속(has A / Is a)

has a : 분리형, 일체형

is a single / multi (x) : extends , implements

 

추상화

-공통분모 : abstract 클래스, abstract 메소드

 

다형성

-절차의 일부분을 분리할 수 있다 - 인터페이스가 필요하다.

-절차의 분리와 도킹

 

자바 인터페이스 : 객체와 객체를 이어주는 접점

인터페이스 : 사물 또는 공간을 이어주는 접점

인터페이스를 통해서 정의하고 구현하고 사용하는 절차가 접함이되면 ?

다형성이 발생

 

일부 절차가 인터페이스로 정의된다 ?

A클래스가 인터페이스를 정의하였다.

 

인터페이스를 구현하는 방법 4가지

1. 외부클래스로 구현 : public class YBMBanner implements Banner

2. 내부클래스로 구현 : public class YBMExamConsole extends ExamConsole implements Banner

3. 메소드내의 중첩클래스로 구현 : 생성자 public YBMExamConsole(){ YBMExamConsole.XXX x = this.new XXX(); }

                                            YBMExamConsole 클래스내에 class XXX implements Banner

4. 익명클래스로 구현 : Banner banner = new Banner() { 구현 } 

5. 람다식이용한 구현

 

중첩클래스의 용도가 꼭 인터페이스용은 아니다.

인터페이스를 객체화할 수없다.


인터페이스의 메소드를 구현할때 부모의 메소드명과 동일하다면 ? 

부모것을 재정의한것처럼되어버림

좌 : 재사용하는 자식 / 우: 부모클래스

부모의 메소드를 오버라이드, 인터페이스를 구현하는것

부모가 이미 print()함수를 가지고있다. 인터페이스가 구현하려는것도 print()다.

->부모것을 재정의한것처럼되어버림

 

인터페이스의 구현은 다른클래스에서해도되지만

부모클래스의 메서드를 오버라이드하는일이 발생한다.

또 클래스를 만든다 ? 이게 부품이라고 할 수있나 ? (너무작은부품들로 개체수가 느는것)

->바람직하지않음

 

클래스안에 클래스가 정의될수있다. (인터페이스구현하기위한 울타리) 메소드충돌

 

좌 : outer / 우 : inner

 

프린트호출할때 a는 두가지 this가 전달된다 

1. 울타리밖에있는 객체의 인스턴스 (YBMExamConsole)

2. XXX의 인스턴스

 

중첩된 클래스의 객체화

import부분에 클래스명 

또는 XXX(inner 클래스)앞에 Outer클래스를 써준다.

클래스안에있는 클래스사용시 import를 하거나 직접 객체앞에 써줘야한다.

 

inner클래스의 객체는 outer객체를 통해 만들어진다. 

new XXX()객체는 outer객체를 통해 만들어져야한다. 

outer를 통해서 만들어져야한다.

outer객체가 갖고있는 new라는 연산자사용

 

 

 

main()이아니라 YBMExamConsole을 작성하는 사람이  XXX의 객체를 만든다.  

초기화작업은 YBMConsole만든사람이 하는게낫다.

XXX객체생성을 YBMExamConsole생성자에넣는다. 

XXX객체생성을 YBMExamConsole생성자에넣는다. 

인터페이스를 메소드내 중첩클래스로 구현 

new연산자앞에 this.객체가있었다
생성자내에 중첩클래스 : 메소드내 중첩클래스 

중첩클래스의 this :두개의 this가 올 수있다. 

outer클래스의 a가 선언되고 inner클래스의 a가 선언되었을때

우선순위가 적용된다. 자기것 (inner)의 a가 호출된다.

outer의 a를 출력하고자 한다면 ?

그냥this쓰면 inner의 this

 

Outer클래스명을  쓰고 this를 쓰면 내부클래스의 a가 출력된다. 

 

 

setBanner(x)에 넣기위해서 생긴 익명클래스

좌: 내부클래스의 이름을 없애고 우: 익명클래스로 바꿈 

 

 

 

'2021 Newlecture > JAVA' 카테고리의 다른 글

String , StringBuffer, StringBuilder 차이점  (0) 2021.08.20
자바 컬렉션과 제네릭 강의  (0) 2021.04.25
자바 총 정리  (1) 2021.04.13
Inner class / Anonymous class  (0) 2021.04.12
(추가정리) 추상클래스 와 인터페이스  (0) 2021.04.11
(추가정리) 상속  (0) 2021.04.10
(추가정리)this키워드  (0) 2021.04.10
(추가정리) 패키지와 static  (0) 2021.04.10

+ Recent posts