1. 인터페이스의 특징

  • 다중 상속이 가능하게 해준다.
  • 추상 메소드와 상수만 선언 가능하다
  • 생성자 사용이 불가능하다(객체가 아니기 때문)
  • 메서드 오버라이딩이 필수이다.(오버라이딩을 안할 경우 컴파일 단계에서 에러가 발생한다.)

 

2. 인터페이스 사용하는 이유?

  • 자바에서 다중 상속을 가능하게 해준다. 자바는 class를 다중으로 상속하는 것은 불가능하다. diamond problem를 해결하기 위해 자바는 단일 상속만을 원칙으로 한다.  

mother과 father을 상속받은 child 입장에서 love()를 실행할 경우 어떤 함수를 실행 시켜야할지 모호함이 발생.

  • 코드의 종속성을 낮춰준다. 
    • 공통으로 필요한 특정 메소드를 인터페이스로 적용한다면, 각각의 메소드를 자유롭게 변경할 수 있다. 

 

3. 인터페이스 예시 

  • 인터페이스 상속시 "implements" 명령어를 사용 
  • Mother.java
package org.example;

public interface Mother {
    public abstract void love();
}
  • Father.java
package org.example;

public interface Father {
    public abstract void love();
}
  • Child.java
package org.example;

public class Child implements Mother, Father{
    @Override
    public void love() {
        System.out.println("i love you");
    }
}
  • Main.java
package org.example;

public class Main {
    public static void main(String[] args) {

        Child child = new Child();
        child.love();
    }
}

'개발 > JAVA' 카테고리의 다른 글

예외처리-JAVA  (0) 2023.02.06

관련 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12953

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

def solution(arr):
    from math import gcd                            
    arr.sort()
    answer = arr[0]                                 
    for number in arr:                                 
        answer = answer * number // gcd(answer, number)     
    return answer

 

해결 포인트

작은 수 부터 최대 공약수를 (x * y) / gcd(x, y)를 적용함. 

관련 문제

https://school.programmers.co.kr/learn/courses/30/lessons/42885

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

def solution(people, limit):
    answer = 0
    people = sorted(people, reverse = True)
    start = 0 
    end = len(people) - 1 
    while start <= end:
        if people[start] + people[end] <= limit:
            end -= 1
        start += 1 
        answer += 1
    return answer

 

해결 포인트

제일 큰 수와 제일 작은 사람이 하나의 보트에 들어갈 수 있는지만 확인하며, end를 업데이트를 해주면 됨

관련 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12914

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

def solution(n):
    if n < 3:
        return n
    
    queue = [0 for _ in range(n)]
    queue[0] = 1
    queue[1] = 2
    
    for i in range(2, n):
        queue[i] = queue[i-2] + queue[i-1]
        
    return queue[-1]%1234567

 

해결 포인트

n개의 멀리 뛰기의 개수는 n-1 + n-2이다. 멀리 뛰기는 1칸 혹은 2칸만 가능하기에 n-1의 경우의 수, n-2의 경우의 수를 더하면 된다. 

+ Recent posts