본문 바로가기
뉴렉처 과정 기록 (Backend)/JAVA

04/06 JAVA 추상화, 인터페이스

by yeonee3219 2021. 4. 6.

 

인터페이스 interface

 

성적을 출력하는 ExamConsole클래스 만들었다 / 성적들을 받아와야되기 때문에 get, set 함수들 생성

 

 

 

 

생성자 종속성 주입 : Constructor DI - Dependency Injection

ExamConsole 은 exam 을 사용하는 객체이기 때문에 

 

분리되어 있는 상태에서 객체를 꽂아 넣어준 것

 

 

 

 

 

생성할때 객체를 꽂아서 넘겨줘야 되기 때문에 기본 생성자가 없어야 됨

 

 

 

누군가가 넘겨주지 않는다면 기본 객체를 만들어주는 생성자를 만들면된다 -> 콘솔안에서 생성해줬다

 

 

 

 

 

 

 

source -> getters setters 자동으로 생성해줌!

 

 

 

 

 

 

 

 

 

 

 

 

 

추상화 위해 avg, total 에 abstract 붙여줌 -> 클래스 전체에 abstract 같이 붙여줘야 함 // total 부분은 baseTotal 만들어 주기

 

 

 

 

 

 

 

baseTotal 은 자식클래스를 위해서 만든건데 저런식으로 서비스하려고 만든 것이 아님

-> 자식은 쓸 수 있게 하고 다른 곳에서는 안보이게 숨겨둬야 겠다

 

 

이렇게 하면 다른 패키지에서는 건들 수 없게 됨

 

 

 

 

 

인터페이스 가기전 전제조건

 

abstract를 한 이유는 : 다른 클래스에서 그 코드를 너희 상황에 맞게 바꿔서 사용해라 라는 의미

 

그런데 고쳐쓰는 방법이 다른 방법도 있다 -> 인터페이스

 

 

 

 

 

콘솔을 재사용 할 것인가?

-> exam에만 특화된 녀석 -> 다 가져다 쓰는 거보다 더 간단히 재사용할 수 있다 어떻게?

 

이런식으로 함수 넣어서  꽂아넣을 수 있게 한다면

 

누군가가 저 함수를 구현해서 객체를 넣어주기만 한다면 ExamConsole을 얼마든지 재사용할 수 있다

 

 

그렇다면 그 함수를 새로운 클래스를 만들어서 구현해주면 되겠다 

 

 

새로운 클래스  interface -> 약속을 정의하는 울타리

 

 

새 클래스 안에 함수 만들어주고 인터페이스!

그 클래스 안이 null값이 아니라면 끼워서 프린트 해줘!

 

 

 

 

 

 

국영수 세 과목말고 과목을 더 추가해서 확장된 클래스 만들어보자

 

새로운 YBMExamConsole 만들었다 -> ExamConsole을 어떻게 이용해서 쓸 것인가?

 

 

 

 

상속해보지만 exam이 private이라서 사용할 수가 없어..

 

인터페이스 하면 되겠다 -> 다음시간에 해보자..