> 개발-IT-인터넷/> JAVA

[해커랭크(HackerRank) JAVA 풀이] - Java Interface

jini:) 2023. 10. 25. 09:19
728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > Object Oriented Programming > Java Interface
 

HackerRank

HackerRank is the market-leading technical assessment and remote interview solution for hiring developers. Learn how to hire technical talent from anywhere!

www.hackerrank.com

 

 

Java 인터페이스는 메소드 서명과 필드만 포함할 수 있습니다. 인터페이스는 다형성을 달성하는 데 사용할 수 있습니다. 이 문제에서는 인터페이스에 대한 지식을 연습합니다.

메서드 서명 int divisor_sum(int n)을 포함하는 AdvancedArithmetic 인터페이스가 제공됩니다. 인터페이스를 구현하는 MyCalculator라는 클래스를 작성해야 합니다.

divisorSum 함수는 정수를 입력으로 받아 모든 제수의 합을 반환합니다. 예를 들어 6의 제수는 1, 2, 3, 6이므로 divisor_sum은 12를 반환해야 합니다. n의 값은 최대 1000입니다.

편집기에서 부분적으로 완성된 코드를 읽고 완성합니다. MyCalculator 클래스만 작성하면 됩니다. class가 public이면 안됩니다.

 

Sample Input

6

 

Sample Output

I implemented: AdvancedArithmetic
12

 

Explanation

6의 약수는 1,2,3, 6입니다. 1+2+3+6=12입니다.

 

 

Code

import java.util.*;
interface AdvancedArithmetic{
  int divisor_sum(int n);
}

//Write your code here
class MyCalculator implements AdvancedArithmetic {
    public int divisor_sum(int n) {
        int sum = 0;
        for(int i = 1; i <= n; i++) {
            if(n % i == 0) sum += i;
        }
        return sum;
    }
}

class Solution{
    public static void main(String []args){
        MyCalculator my_calculator = new MyCalculator();
        System.out.print("I implemented: ");
        ImplementedInterfaceNames(my_calculator);
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        System.out.print(my_calculator.divisor_sum(n) + "\n");
      	sc.close();
    }
    /*
     *  ImplementedInterfaceNames method takes an object and prints the name of the interfaces it implemented
     */
    static void ImplementedInterfaceNames(Object o){
        Class[] theInterfaces = o.getClass().getInterfaces();
        for (int i = 0; i < theInterfaces.length; i++){
            String interfaceName = theInterfaces[i].getName();
            System.out.println(interfaceName);
        }
    }
}

 

 

인터페이스 (Interface)
  • 추상 클래스와 비슷.
  • 추상 메서드의 집합을 정의하는데 사용.
  • 추상 클래스보다 더 추상화된 형태.
  • 특정 메서드의 구현을 갖지 않음.

인터페이스 특징
1. 추상 메서드의 집합 : 추상 메서드의 정의만 포함. 구체적인 메서드 구현은 인터페이스를 구현하는 클래스에서 이루어짐.
2. 다중 상속 지원 : 자바에서 클래스는 단일 상속만 허용하지만, 여러 인터페이스를 구현하는 다중 상속을 지원. 클래스가 여러 인터페이스를 구현할 수 있으므로 코드 재사용과 유연성을 높임.
3. 클래스나 인터페이스에서 상속 : 다른 인터페이스로부터 상속될 수 있으며, 클래스도 인터페이스 구현 가능.
4. 인터페이스 필드 : 상수(상수 필드)를 정의 할 수 있으며, 이러한 상수는 자동으로 'public', 'static', 'final'로 설정.

인터페이스의 용도
1. 표준화 (Standardization) : 메서드의 이름과 파라미터를 표준화하여 다양한 클래스에서 일관된 방식으로 메서드를 구현하도록 함.
2. 다형성 (Polymorphism) : 인터페이스를 구현하는 여러 클래스 객체를 하나의 인터페이스 타입으로 다루어 다형성을 활용.
3. 코드 재사용 (Reusability) : 코드 재사용을 촉진, 유지보수 용이.

 

참고 - 추상 클래스와 추상 메서드

[해커랭크(HackerRank) JAVA 풀이] - Java Abstract Class

 

[해커랭크(HackerRank) JAVA 풀이] - Java Abstract Class

해커랭크 - https://www.hackerrank.com/ Prepare > Java > Object Oriented Programming > Java Abstract Class HackerRank HackerRank is the market-leading technical assessment and remote interview solution for hiring developers. Learn how to hire technical

ji-ni.tistory.com

 

 

개인 공부를 위한 포스팅입니다.
모든 번역, 코드는 완벽하지 않을 수 있습니다.

 

 

 

728x90
반응형