CODING/스파르타 내일배움캠프 TIL

24_음양 더하기_자바 강의 다형성, Object_25.1.15(수)

codingTrip 2025. 1. 15. 21:58

코트카타

26) 음양 더하기

나의 풀이

class Solution {
    public int solution(int[] absolutes, boolean[] signs) {
        int answer = 0;
        for(int i=0;i<absolutes.length;i++){
            if(signs[i] == false){
                absolutes[i] = absolutes[i] * -1;
            }
            answer += absolutes[i];
        }
        return answer;
    }
}

 

다른 분의 풀이

class Solution {
    public int solution(int[] absolutes, boolean[] signs) {
        int answer = 0;
        for (int i=0; i<signs.length; i++)
            answer += absolutes[i] * (signs[i]? 1: -1);
        return answer;
    }
}

삼항 연산자를 사용하셨다.

그래서 더 깔끔해 보인다. 

 


김영한의 실전 자바 - 기본편

 

- Model3Car  생성

- driver.setCar(model3Car) 호출해서

Driver Car car 필드가 Model3Car  인스턴스를 참조하도록 변경

- driver.drive() 호출하면 x002 참조

car 필드가 Car타입이므로 Car 타입을 찾아서 실행

하지만 메서드 오버라이딩에 의해 Model3Car  기능이 호출된다.

 

OCP(Open-Closed Principle) 원칙

좋은 객체 지향 설계 원칙 하나

Open for extension: 새로운 기능의 추가나 변경 사항이 생겼을 , 기존 코드는 확장할 있어야 한다.

Closed for modification: 기존의 코드는 수정되지 않아야 한다.

 

출처 : 김영한 Java 기본편 강의자료

전략 패턴(Strategy Pattern)

디자인 패턴 중에 가장 중요한 패턴을 하나 뽑으라고 하면 전략 패턴을 뽑을 있다.

전략 패턴은 알고리즘을 클라이언트 코드의 변경 없이 쉽게 교체할 있다.

방금 설명한 코드가 바로 전략 패턴을 사용한 코드이다.

Car 인터페이스가 바로 전략을 정의하는 인터페이스가 되고, 각각의 차량이 전략의 구체적인 구현이 된다.

그리고 전략을 클라이언트 코드(`Driver` ) 변경 없이 손쉽게 교체할 있다.

 

김영한의 실전 자바 - 중급1편

 

출처 : 김영한 Java 중급1편 강의자료

obj.sound() 호출

obj.sound() 를 호출한다.
obj 는 Object 타입이므로 Object 타입에서 sound() 를 찾는다.
Object 에서 sound() 를 찾을 수 없다.
Object 는 최종 부모이므로 더는 올라가서 찾을 수 없다.

따라서 오류가 발생한다.

 

출처 : 김영한 Java 중급1편 강의자료

Dog 인스턴스의 sound() 를 호출하려면 다음과 같이 다운캐스팅을 해야한다.

if (obj instanceof Dog dog) {
    dog.sound();
}

Object obj 의 참조값을 Dog dog로 다운캐스팅 하면서 전달한다.
        dog.sound() 를 호출하면 Dog 타입에서 sound() 를 찾아서 호출한다.