728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > Object Oriented Programming > Java Interface
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) : 코드 재사용을 촉진, 유지보수 용이.
참고 - 추상 클래스와 추상 메서드
개인 공부를 위한 포스팅입니다.
모든 번역, 코드는 완벽하지 않을 수 있습니다.
728x90
반응형
'> 개발-IT-인터넷 > > JAVA' 카테고리의 다른 글
[해커랭크(HackerRank) JAVA 풀이] - Java Method Overriding 2 (Super Keyword) (0) | 2023.10.27 |
---|---|
[해커랭크(HackerRank) JAVA 풀이] - Java Method Overriding (0) | 2023.10.26 |
[해커랭크(HackerRank) JAVA 풀이] - Java Abstract Class (1) | 2023.10.24 |
[해커랭크(HackerRank) JAVA 풀이] - Java Inheritance II (0) | 2023.10.23 |
[해커랭크(HackerRank) JAVA 풀이] - Java Inheritance I (0) | 2023.10.20 |