JAVA - 11[주간]

Lumi·2021년 6월 6일
0
post-thumbnail

2021.06.06

9강 : 추상클래스의 의미와 구현하는 방법

메서드에 구현부가 없는 것을 추상 클래스 라고 한다.
추상 클래스 : int add(int x, int y);
abstract 예약어를 사용한다.
-> 추상 메소드를 포함한 class는 new 를 할 수 없음(인스턴스화 불가능)
** 구현부가 없기 떄문에.

abstract가 사용된 함수는 하위(상속받는) class에서 재정의 가능하다.
이클립스의 실습 코드를 참고해보면 new 할수 있는 class는
DeskTop, MyNoteBook 두가지 뿐이다(추상 메소드, class가 없음)

추상 클래스는 상속만을 하기 위해서 만든 class다.
-> 추상 클래스 안에 구현하는 method는 일부 혹은 전체를 구현 가능 하기 떄문에

10강 : 추상 클래스를 활용한 템플릿 메서드 패턴

프레임워크에서 많이 사용되는 설계 패턴
final로 선언하여 하위 클래스에서 재정의 할 수 없게한다.
-> class에 final이 들어가게 되면 상속을 사용할수가 없다.

final :
변수 -> 상수
method -> 재정의 불가
class -> 상속이 불가

만약 하위 class에 기능을 추가 하고 싶다면
상위 클래스에 abstract를 사용하여 만들어 주고 하위 클래스에서 만들어 주면 된다.
(코딩을 참고해보면 감이 옴)

11. 구현 코드가 없는 인터페이스

모든 메서드가 추상 메서드로 선언됨(구현 코드가 없다)
만약 변수가 선언 된다면 상수로 선언된다.

상속은 구현 코드를 상속을 받지만
인터페이스는 class가 구현한다 라고 이해를 하면된다.

class말고 interface를 열어준다(ctrl + n)

interface를 사용하는 class는 implements를 입력해주어야함(코드 참고)

코드를 참고해보았을떄 calculator 이 calc라는 인터페이스를 사용 하였기 때문에 calculator을 상속받은 completecalc를 type 상속 이라고 한다.

상속은 하나만 가능하지만 인터페이스는 여러개 가능하다

12강 : 인터페이스는 왜 사용하는가

고객과 서비스로 접근을 해보면

고객은 서비스를 이용할뿐 그 서비스가 어떻게 코드가 짜져있고 어떻게 이루어져 있는지에 대한 정보는 필요가 없다

그러기 때문에 고객이 사용할수 있게 인터페이스를 만들어서 사용하기 편하게 만들어 줌

이러한 이유로 인터페이스를 사용한다.
--> 클래스나 프로그램이 제공하는 기능을 명시적으로 보여줌

13강 : 인터페이스를 활용한 다형성 구현(dao구현하기)

환경파일에서 database의 종류에 대한 정보를 읽고 그 정보에 맞게 dao인스턴스를 활성하여 실행될 수 있게 함

이 수업은 안배운 내용도 많고 많이 복잡하기 떄문에 이렇게 사용한다 정도만 알면 될꺼같음(아직까지는)

14강 : 인터페이스의 여러가지 요소

디폴트 메서드 : class가 인터페이스를 implement했을때만 사용 가능한 메서드(default 사용)

default 와 static를 통해서 구현코드를 만들어 줄수가 있다.
default 메소드 같은 경우에는 하위 클래스에서 재정의가 가능하지만
static 메소드는 메소드의 이름으로 호출을 하기 떄문에 재정의가 불가능하다.

이번 강의는 주로 코딩에 주석처리를하여 적었다.
--> 계속해서 변화를 주면서 컴파일 했기 떄문에.

15강 : 여러 인터페이스 구현하기, 인터페이스의 상속

인터페이스와 클래스를 모두 이용하여 사용하는 경우가 많다.

이와 같이 인터페이스는 여러가지를 상속받을수 있지만
중요한 것은 buy에서는 buy에서만 사용하는 함수를 사용해야하고
sell에서는 sell에서만 사용하는 함수를 사용 해야 한다.

인터페이스 사이에서도 상속을 사용할떄에는 extends를 사용한다.
-> 다중 상속이 가능하며 type 상속이라고 한다.


class 와 인터페이스를 동시에 이용할떄에는
앞에 extends를 먼저 쓰고 뒤에 implements를 사용한다(코드 참고)

=========== 느낀점 ==========
어느 순간부터 코드 내용이 상속에 상속을 담기 떄문에 코드 내용을 캡쳐해서 올리기에는 너무 부담이 되기 시작하였다
그러기 떄문에 github에 올려서 저장하는 방법을 택했다
-> 어차피 내 공부용이기 떄문에 자주는 아니고 3~4일에 한번씩 업데이트 한다.

항상 드는 생각이지만 이해가 안되면 재미가 없는게 프로그래밍 같은데 이해가 되어버리면 너무 재미있고 흥미로운거 같다.

========== chapter 3 복습 =============
이 블로그는 공부하는 기록을 남기기 용이기 떄문에 상세하게는 적지 않고 내가 다시 코드를 보거나 또는 블로그를 확인하면서 문득문득 이런게 있었지 하며 느꼈던 것들에 대해서 적어보겠다.

일단 ArrayList와 아직 내가 덜 친해진거 같다.
배열을 만들고 생성자 함수를 만들어 배열에 집어넣는 그 프로그래밍은 아직도 뭔가 어렵고 익숙해지지 못했다.

두번쨰 역시 이해가 되면 코딩공부는 너무 재미있는거 같다.
이게 이렇게 되고 저게 저렇게 되서 이렇게 상속받는거구나 라고 느끼는 시점이 오면 코딩 하나하나 분석(?)하고 파악하는것이 참 재미있는거 같다.

profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글