2023년 03월 19일 - 넷째 주 수업!
18일에 이어서 작성을 해보려고 한다!
다형성으로 패키지를 만들었다.
MyWork, Work, WorkMain 클래스를 만들어서 코드를 작성해 주었다.
extends 를 기준으로 왼쪽에 자식클래스, 오른쪽에 부모클래스명을 작성해준다.
아래에는 오버라이딩 해주어서 work A, B, C 추상메소드를 구현해 주고, levelUp 메소드를 하나 더 만들어주었다.
Work 클래스에는 coffee 와 trash 메소드를 구현해 주었고, workA, workB, workC 하위 클래스로 작성해주었다.
WorkMain 클래스에 코드를 작성해 주었는데, 추상클래스에는 객체 생성을 할 때 자식껄로 생성을 해야된다!
WorkB를 호출해주고 work를 Mywork로 캐스팅하여 levelUp 메소드도 같이 호출해서 출력해주었다.
이런식으로 나오는 코드를 computer 클래스에도 적용을 해보았다.(생략)
어제 만들었던 Samsung, LG Factory 클래스를 상속받아서 Factory 패키지안에 클래스를 두개 만들고, 인터페이스를 구현해보았다.
두개 클래스의 코드 작성한걸 보자면,
Samsung, LG Factory 생성을 먼저 해주고, 메소드를 호출시켜 준다.
FactoryService 에 작성한 코드도 마찬가지로 메소드를 호출해주었다.
FactoryMain 에 (samsungFactory) 부분에 lgFactory 를 넣으면 LGFactory 메소드가 호출되면서 출력이 된다.
위에서 인터페이스 라는 단어가 나왔는데 인터페이스의 특징을 알아보자면!
1. 인터페이스는 상속이라 하지 않고 구현이라고 한다.
2. 모든 메소드는 기본적으로 추상메소드로 정의한다.
3. 전에 클래스에서 객체 생성을 하였는데, 인터페이스에서는 생성이 불가능하다.
4. 일반 변수는 선언할 수 없다.
5. 무조건 static 상수를 사용한다. (상수 : 변하지 않는 수, 상수로 구분하기 위해 모두 대문자로 사용하며 글자가 기울어짐)
6. 일반 메소드를 정의하기 위해서는 반환 자료형 앞에 default를 입력해야 된다.
* 일반메소드 -> ex) public default void disConnect();
7. 상속은 다중 상속이 불가능하지만 인터페이스에서 구현은 다중 구현이 가능하다.
인터페이스 패키지를 만들어서 아래 클래스를 여러개 만들어주었다.
먼저 클래스 각각 입력되어 있는 코드를 확인해보겠다.
여기서는 Computer 클래스에서 HDMI 인터페이스를 this 를 사용하여 호출해왔다.
그리고 아래 네 개의 메소드를 호출해서 출력될 내용을 작성해 준것이다.
마지막 아래 두개를 보면 hdmi. 으로 뒤에 다른 메소드를 호출해서 가져왔다.
모니터와 컴퓨터를 각각 구현하여 아래 출력이 될 수 있도록 작성해주었다.
이 클래스는 인터페이스로 HDMI 를 정의하였고, connect 와 disConnect 메소드를 선언해 주었다.
NUMBER 부분은 상수를 확인하기 위해 작성한 코드이다.
여기서 나오는 implements 란 "구현" 이라는 뜻이다.
Moniter 클래스에 HDMI 인터페이스를 구현해주었다.
그래고 아래 오버라이딩 하여 connect 와 disConnect 메소드를 가져와서 출력될 내용을 입력해 주었다.
이렇게 만든 클래스를 확인하였고, 출력된 내용을 확인해보면 아래처럼 출력이 된다.
컴퓨터를에 전원을 키고 출력장치와 HDMI 연결을 해준 다음, 연결을 해제하여 컴퓨터 전원을 끄는 내용의 구현을 해보았다.
이러한 내용으로 페이스북과 카카오톡의 메신저를 주고 받는 내용과 다른 기능을 추가하여 사용할 수 있는 구현을 만들어보았는데 그 내용에 대해 알아볼 것이다.
다형성2 패키지를 만들어서 4개의 클래스와 인터페이스 하나를 만들었다.
FacebookMessenger 클래스에 Messenger 를 구현받아서 오버라이딩 한 다음 출력될 내용을 작성해주었고,
맨 아래 call 메소드를 호출하여 출력할 내용을 작성해주었다.
KakaoTalk 클래스에 Messenger 를 구현받아서 오버라이딩 한 다음 출력될 내용을 작성해주었고,
맨 아래 sendPresent 메소드를 호출하여 출력할 내용을 작성해주었다.
Messenger 인터페이스에 메소드를 작성해주었다.
여기서는 MessengerMiddleware 클래스에서 Messenger 인터페이스를 this를 사용하여 호출해왔다.
메소드를 호출하였고, KakaoTalk과 FacebookMessenger 를 if 문으로 조건을 걸어서 작성해 주었다.
생성을 해준 다음 아래 메소드 호출하여 출력될 메세지와 추가기능까지 함께 코드 작성을 해주었다.
출력결과를 보면 조건문에 맞게 출력이 되었고, Main 클래스에서 10행에 Facebook 과 KakaoTalk 두 개 중 원하는 값을 작성해 주면 그 작성한 값에 맞춰서 출력이 된다.
이제 넷째 주 수업에 대한 블로그를 끝냈다.
블로그를 작성을 하다보면 그 주에 맞게 바로 블로그를 작성을 하기가 쉬운 것이 아니었다.
그래서 자세하게 쓰려고 많은 노력을 했지만 그러기 위해 기억을 다듬고 검색을 하면서 그 기능에 대한 지식을 한번 더 공부를 해서 작성을 할 때도 있다.
이렇게 하면서 공부가 되는 것 같지만 더 자세하게 기초를 다지면서 공부를 해야되겠다는 생각이 많이 든다.
블로그를 작성하면서 내가 잘하고 있는게 맞는가 라는 생각이 많이 들때가 있다.
그래도 지금처럼 꿋꿋하게 써나가면 되겠지..?!
화이팅.