티스토리 뷰

인터페이스

두 객체를 연결하는 역할

 

객체 A는 인터페이스의 메서드만 사용하므로 객체 B가 객체 C로 변경된 것에 관심이 없다.

만약 인터페이스 없이 객체 A가 객체 B를 직접 사용한다면, 객체 A의 소스 코드를 객체 B에서 객체 C로 변경하는 작업이 추가로 필요하다.

객체 A 가 인터페이스의 메서드를 호출하면 실제로 실행되는 것은 인터페이스 뒤편의 객체 B 또는 객체 C 의 메서드다.

만약 객체 B의 메서드 실행 결과와 객체 C의 메서드 실행 결과가 다르다면, 객체 A는 객체 교체로 인해 다른 결과를 얻게 된다.

  • 모든 메서드가 추상 메서드로 선언됨 
  • 모든 변수는 상수로 선언됨 
  • 그 외 멤버 선언 종류

public final 필드

public abstract() 메서드

public default() 메서드

public static() 메서드

private() 메서드

private static() 메서드

 

인터 페이스 특징
  • 추상 메서드: 추상 메서드(구현부가 없는 메서드)만을 가질 수 있다. 자바 8부터는 default 메서드와 staitic 메서드를 가질 수 있게 됨.
  • 다중 상속: 클래스는 여러 인터페이스를 구현할 수 있으므로 다중 상속의 효과를 낼 수 있다. 
  • 구현: 클래스가 인터페이스를 구현할 때는 implements 키워드를 사용함.

 

 

예시)

Animal의 상속을 받은 Bird 클래스 생성 및 메서드 오버라이드
Animal의 상속을 받은 Dog와 Bird를 다형성에 의해 같은 것으로 바라봐서 업캐스팅됨.

 

 

 

예시2)

 

instanceof 연산자

 

  • 매개변수의 다형성에서 어떤 객체가 매개값을 제공되었는지 확인하는 방법
  • 매개변수가 아니더라도 변수가 참조하는 객체의 타입을 확인하고자 할 때 사용
boolean result = 객체 instanceof 타입;

=> 객체가 타입이면 true , 그렇지 않으면 false를 산출한다.

 

예시)

인터페이스 Calc 생성하여 추상 메서드 호출함.
인터페이스 Calc 를 구현하여 Clac의 divide() 메서드를 오버라이드(재정의)함.

 

 

 

Object 클래스

모든 클래스의 최상위 클래스

 

모든 클래스는 Object에서 상속받고, Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있다.

Object 클래스를 제외한 단 하나의 상속만 받을 수 있다.( 자바에서는 단일 상속만을 지원)

 

  • Object 클래스는 java.lang 패키지 안에 존재한다.
  • import java.lang.*; 프로그래밍 시 import 하지 않아도 자동으로 import 된다.
  • 기본 클래스들이 속한 패키지이며 String, lnteger, System 등이 존재한다.

 

메서드 활용

Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있다. 

재정의할 수 없는 메서드는 final로 선언되어 있다.

 

 

toString() 메서드

  • 객체의 정보를 string으로 바꾸어서 사용할 때 쓰임
  • String이나 Integer 클래스는 이미 재정의되어 있음

 

재정의 예시)

 

 

equals() 메서드

기본적인 동작은 두 인스턴스의 주소값을 비교하여 true/false를 반환한다.

필요시 재정의하여 두 인스턴스가 논리적으로 동일함의 여부를 구현한다.

물리적으로 책은 2권(사피엔스, 사피엔스)이 존재하지만 논리적으로 같은 것이라고 재정의 할 수 있다.

즉, 인스턴스가 다르더라도 논리적으로 동일한 경우 true 를 반환하도록 재정의 할 수 있다. 

 

예시)

코드 테스트 1
코드 테스트 2

 

코드 테스트 2 실행 시  if 문의 조건식인 book1과 myBook1의 문자열 값이 다르므로 else 구문이 실행되어

아니야 다른 주소야

1,홍길동전,허균

1,홍길동전,허균

으로 출력된다. 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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 29 30 31
글 보관함