객체 지향 자바 프로그래밍 - 인터페이스

awarduuu·2023년 3월 27일
0

230327

1. 인터페이스

  • class와 유사하지만 class가 아니다 (상속 x, 생성 x)
  • interface를 구현(implements)하여 다중상속 같은 효과를 얻음
  • interface의 모든 변수는 public static final (상수)
  • interface의 모든 method는 public abstract (기능x)
  • 위의 방법으로 선언되어 있지 않더라도 무조건 public static final, public abstract로 선언된다.

interface A {
// 메소드 2개
}

interface B {
// 메소드 3개
}

class Parent {
	public void aa(){}
    public void bb(){}
}

class Test implements A {
	A2개의 메소드 재정의 - abstract은 버리고 기능을 추가한다.
}

A a = new Test();

class Test2 extends Parent implements B {
	A, B5개 메소드 재정의
}

Parent p = new Test2();
B b = new Test2();
A a = new Test2();

인터페이스 내 static or default method

interface 안에 있는 메소드에 static or default 메소드를 만들 수 있고 static or default가 선언되면 body가 있는 메소드가 된다

1) static 메소드
: 구현 객체 없이 바로 interface이름.메소드이름() 호출 가능

2) default 메소드
: 반드시 구현 객체가 있어야 호출 가능

사용 이유

  1. 이미 구현된 상태에서 특정 구현객체만 필요한 메소드가 있다면 static or default를 만들고 필요한 구현 클래스에서만 재정의 하도록 하는것.

  2. 모든 구현 객체들이 공통으로 사용하는 기능이 정해져있다면 static or default로 만들어서 재정의 없이 사용한다.

2. is a 와 has a

is a

상속(extends), 구현(implements) 관계를 의미한다.

class A extends B implements C{
}

// C is a A, B is a A로 표현 가능

has a

멤버필드, 지역변수 관계를 의미한다.

class A {
	B b; // 멤버필드
    A (B b){} // 지역변수
}
profile
선한 영향력을 만드는 개발자

0개의 댓글