오늘 배운 내용
- Java : 인터페이스, 다형성
새로 알게된 내용
1. 인터페이스
- 인터페이스는 추상과 final과 비슷하게 규제를 한다.
- 어떤 객체가 있고 그 객체가 특정한 인터페이스를 사용 → 그 객체는 반드시 인터페이스의 메소드들을 구현해야 함
- 만약, 인터페이스가 강제하는 메소드를 구현하지 않으면 에플리케이션은 컴파일도 안된다.
인터 페이스의 예
interface I{
public void z();
}
class A implements I { //A는 I라는 인터페이스를 구현한다.
public void z() {} //빈로직이어도 메소드를 반드시 구현해야한다!!
}
- 하나의 클래스가 여러 인터페이스를 구현할 수 있다.
interface I1{
public void x();
}
interface I2{
public void z();
}
class A implements I1, I2{ //A는 I1,I2를 구현한다.
public void x(){}
public void z(){} //I1,I2에 정의된 메소드를 반드시 구현해야한다.
}
- 인터페이스도 상속이 된다.
interface I3{
public void x();
}
interface I4 extends I3{ //I4는 I3를 상속한다.
public void z();
}
class B implements I4{ //B는 I4를 구현한다.
public void x(){}
public void z(){} //B에서 I4에 상속된 I3의 메소드도 반드시 구현해야한다.
}
- 인터페이스의 멤버의 접근 제어자는 반드시 public이어야 한다.
2. 다형성
- 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다.
- 메소드에서의 다형성의 대표적인 예는 '오버로딩'이다.
class O{
public void a(int param){
System.out.println("숫자출력");
System.out.println(param);
}
public void a(String param){
System.out.println("문자출력");
System.out.println(param);
}
}
public class PolymorphismOverloadingDemo {
public static void main(String[] args) {
O o = new O();
o.a(1); // 결과 : 숫자출력/1
o.a("one"); //결과 : 문자출력/one
}
}
여기서 a메소드는 a라는 같은 이름을 공유하지만 서로 다른 동작 방법을 갖고있다 !
- 클래스에서의 다형성의 대표적인 예는 오버라이딩이다.
class A{
public String x(){return "x";}
}
class B extends A{
public String y(){return "y";}
}
public class C {
public static void main(String[] args) {
A obj = new B(); //obj는 A의 데이터타입을 갖는다. 즉, 클래스 B가 클래스 A화 되었다.
obj.x(); //결과 : x
obj.y(); //y메소드는 A클래스에 정의되어 있이 않아서 실행이 되지 않는다.
}
}
class A{
public String x(){return "A.x";}
}
class B extends A{ //B는 A를 상속
public String x(){return "B.x";} //x메소드 오버라이딩
public String y(){return "y";}
}
class B2 extends A{ //B2는 A를 상속
public String x(){return "B2.x";} //x메소드 오버라이딩
}
public class C {
public static void main(String[] args) {
A obj = new B();
A obj2 = new B2();
System.out.println(obj.x()); //결과 : B.x
System.out.println(obj2.x()); //결과 : B2.x
}
}
느낀점
아직 Java에 대한 기초도 확실하지 않은데 뭔가 마음이 급한 것 같다.
기본 개념은 늘 중요하다 ! 우선, Java기초 이론을 끝내자. 마음을 급하게 먹지 않는 것이 중요한 것 같다 !
'TIL&WIL' 카테고리의 다른 글
| 2023-04-27 TIL (Java : Object, enum) (0) | 2023.04.27 |
|---|---|
| 2023-04-26 TIL (Java : 예외) (0) | 2023.04.26 |
| 2023-04-24 TIL (Java : 추상, final) (0) | 2023.04.24 |
| 2023-04-18 TIL (Java : Overriding, Overloading) (0) | 2023.04.18 |
| 2023-04-17 TIL (SQL) (0) | 2023.04.17 |