Java
[JAVA] 인터페이스(Interface)란?
YEJI ⍢
2022. 12. 27. 05:04
728x90
Class의 상속(inheritance)는 여러 문제점으로 인해 다중 상속이 불가능합니다.
하지만 다중 상속의 이점을 버릴 수 없어서 인터페이스(interface)를 통해 다중 상속을 지원하게 됩니다.
인터페이스(interface)란?
인터페이스는 추상 메서드(method)만을 가질 수 있는 일종의 추상 클래스입니다.
즉 함수의 바디(body)를 가질 수 없다는 의미입니다.
- 대문자(Upper case)로 시작
- Constructor를 정의하지 X
- Instance 변수를 정의하지 X
- Method body를 정의하지 X
- 메소드(method)의 body가 구현되지 않아서 interface는 객체(object)를 생성할 수 X
- Interface로도 extends 사용해서 상속(inheritance)받기 가능
Interface를 물려받을 땐 "implements"를 사용합니다.
public class Class_name implements Interface_name
Interface 코드
public interface Measurable {
public double getPerimeter();
public double getArea();
}
Constructor, instance 변수, method body를 구현하지 않았습니다.
method의 body 구현은 implements한 class에서 구현하게 됩니다.
Implements된 class의 코드
// Rectangle class
public class Rectangle implements Measurable{
private double myWidth;
private double myHeight;
public Rectangle() {
myWidth = 0;
myHeight = 0;
}
public Rectangle(double width, double height) {
myWidth = width;
myHeight = height;
}
@Override
public double getPerimeter() {
return 2 * (myWidth + myHeight);
}
@Override
public double getArea() {
return myWidth * myHeight;
}
}
// Circle class
public class Circle implements Measurable{
private double myRadius;
public Circle() {
myRadius = 0;
}
public Circle(double radius) {
myRadius = radius;
}
public double getPerimeter() {
return 2 * Math.PI * myRadius;
}
public double getCircumference() {
return getPerimeter();
}
public double getArea() {
return Math.PI * myRadius * myRadius;
}
}
implements한 인터페이스의 함수를 구현하지 않으면 error가 뜹니다.
이런 식으로 인터페이스를 사용할 수 있습니다.
◡̈