Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- instruction
- github
- system
- while
- data structure
- XML
- for
- web
- DS
- MIPS
- DoM
- Class
- computer
- Linux
- html
- php
- Java
- architecture
- function
- DB
- react
- DATAPATH
- python
- Pipelining
- mysql
- MacOS
- CSS
- Algorithm
- javascript
- control
Archives
- Today
- Total
YYYEJI
[JAVA] 인터페이스(Interface)란? 본문
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가 뜹니다.
이런 식으로 인터페이스를 사용할 수 있습니다.
◡̈
'Java' 카테고리의 다른 글
[JAVA] 예외처리(try-catch, throw, finally)란? (0) | 2022.12.27 |
---|---|
[JAVA] 추상 클래스(Abstract Class)란? (0) | 2022.12.27 |
[JAVA] 오버라이딩(Overriding)이란? (0) | 2022.12.27 |
[JAVA] Super 메소드 (0) | 2022.12.27 |
[JAVA] 상속(Inheritance)란? (0) | 2022.12.27 |