부스트코스 생활코딩 [쉽게 배우는 자바2] 공부 기록
1. 수업소개
Interface
이 수업을 듣기 위해서는 class와 instance의 개념을 알아야 한다 !!
package javaChapter2_12;
interface Calculable {
int sum(int v1, int v2);
}
class RealCal implements Calculable {
@Override
public int sum(int v1, int v2) {
return v1 + v2;
}
}
class DummyCal implements Calculable {
public int sum(int v1, int v2) {
return 3;
}
}
public class InterfaceApp {
public static void main(String[] args) {
RealCal c = new RealCal();
System.out.println(c.sum(2, 1));
}
}
인터페이스에 대한 첫인상은 '약속'이다.
클래스의 형태를 규정한다.
2. 인터페이스의 형식
interface 이름은 대문자로 시작을 하고, 형용사로 쓰는 경우가 많다.
하나의 class는 여러 개의 interface를 구현할 수 있다 !!
인터페이스에는 메소드와 변수가 정의될 수 있는데 변수에는 값이 들어오고,
메소드에는 실제 구현이 들어온다.
package javaChapter2_12;
interface Calculable {
double PI = 3.14;
int sum(int v1, int v2);
}
interface Printable {
void print();
}
class RealCal implements Calculable, Printable { // 여러 개의 interface 구현 OK
@Override
public int sum(int v1, int v2) {
return v1 + v2;
}
@Override
public void print() {
System.out.println("This is RealCal!!");
}
}
class DummyCal implements Calculable {
public int sum(int v1, int v2) {
return 3;
}
}
public class InterfaceApp {
public static void main(String[] args) {
RealCal c = new RealCal();
System.out.println(c.sum(2, 1));
c.print();
System.out.println(c.PI);
}
}
쉽지 않네 인터페이스 ?? 😥
3. 다형성 (Polymorphism)
package javaChapter2_12;
interface Calculable {
double PI = 3.14;
int sum(int v1, int v2);
}
interface Printable {
void print();
}
class RealCal implements Calculable, Printable { // 여러 개의 interface 구현 OK
public int sum(int v1, int v2) {
return v1 + v2;
}
public void print() {
System.out.println("This is RealCal!!");
}
}
class AdvancedPrint implements Printable {
public void print() {
System.out.println("This is RealCal!!");
}
}
public class InterfaceApp {
public static void main(String[] args) {
Printable c = new AdvancedPrint();
c.print();
}
}
객체 타입이 부모 클래스, 인터페이스, 자식 클래스 등 여러 형태인데도
인스턴스로 만든 객체(자식 클래스의 인스턴스)와 같이 행동하는 것을 다형성이라고 함.
4. 사용설명서 속의 인터페이스
package javaChapter2_12;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class FileWriterApp {
public static void main(String[] args) throws IOException {
Writer fileWriter = new FileWriter("filewriter.txt");
fileWriter.write("data 1");
fileWriter.write("data 2");
fileWriter.write("data 3");
fileWriter.close();
}
}
close 메소드로 현재 파일에 대한 점유를 끝낸다는 표시를 함.
close 메소드는 AutoCloseable 인터페이스에 선언되어 있는 메소드임.
5. 수업을 마치며
인터페이스의 용도(?) 쓰임(?) 이런 게 어려운 것 같다.
상속과 비슷한 느낌을 주는 것 같으면서 뭔가 다르다.
상속이 extends를 사용한다면, 인터페이스는 implements.
처음에는 이것조차도 헷갈렸는데, 지금은 구분이 가다니 그것은 다행이다.
알아가자.
300x250
'Language > JAVA' 카테고리의 다른 글
[JAVA] 제네릭 1~5 Generic - Data Type (0) | 2022.02.13 |
---|---|
[JAVA] 예외 1~9 Exception 예외 (try~catch finally throws) (0) | 2022.02.12 |
[JSP] 'Dynamic Web Project' 프로젝트 생성 (0) | 2022.02.10 |
[JAVA] 상속 1~6 Inheritance , overriding , overloading , super (0) | 2022.02.10 |
[JAVA] 객체지향 프로그래밍 7~9 생성자 this / 클래스화 인스턴스화 (0) | 2022.02.09 |