728x90
![](https://blog.kakaocdn.net/dn/GN9vl/btrub9NGZ4r/pX8aQqToaH6ijfLd3dh1tk/img.png)
참고자료: Youtube - 생활코딩 JAVA1
수업 소개
//인터페이스로 형태를 규제한다.
interface Calculable {
int sum(int v1, int v2);
}
//인터페이스 형태대로 클래스를 생성한다.
class RealCal implements Calculable {
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) {
DummyCal c = new DummyCal();
System.out.println(c.sum(2,1));
}
}
📌인터페이스는 약속이다. 인터페이스는 클래스의 형식을 규제한다.
인터페이스의 형식
interface Calculable {
double PI = 3.14;
int sum(int v1, int v2);
}
interface Printable {
void print();
}
class RealCal implements Calculable, Printable {
public int sum(int v1, int v2) {
return v1 + v2;
}
public void print() {
System.out.println("This is RealCal!!");
}
}
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);
}
}
📌자바는 하나의 클래스만 상속받을 수 있다. 자바는 여러개의 인스턴스를 상속받을 수 있다.
👉🏻인터페이스는 메소드와 변수가 올 수 있다. 다만 메소드는 직접 구현하지 않아서 해당 인터페이스에서 지정한 형태를 만족하는 메서드는 직접 구현해야 한다.
다형성
interface Calculable {
double PI = 3.14;
int sum(int v1, int v2);
}
interface Printable {
void print();
}
class RealCal implements Calculable, Printable {
public int sum(int v1, int v2) {
return v1 + v2;
}
public void print() {
System.out.println("This is RealCal!!");
}
}
public class InterfaceApp {
public static void main(String[] args) {
//RealCal이라는 클래스를 데이터타입으로 지정하고 있다.
//RealCal은 Calculable과 Printable을 상속받고 있으므로 두 인터페이스 모두 데이터 타입으로 지정할 수 있다.
RealCal c = new RealCal();
System.out.println(c.sum(2,1));
c.print(); //인스턴스 c는 Printable 인스턴스를 상속받으므로 print메서드 이용 가능
System.out.println(c.PI);
Calculable d = new RealCal();
d.print(); //인스턴스 d는 Printable 인스턴스를 상속받지 않아로 print메서드 이용 불가능
}
}
📌Polymorphism, 다형성: 본인이 원하는 기능을 가진 인터페이스만 상속받아 효율적인 class를 만드는 속성
728x90