1219 다형성 인수, 추상클래스, 인터페이스

MONA·2023년 12월 19일

나혼공

목록 보기
5/92

다형성 인수

자식 클래스마다 다른 타입으로 메서드를 지정하는 방법-> 자식 클래스 수 만큼 메서드가 늘어나는 문제가 발생.

-> 부모 타입으로 지정하여 하나의 타입(부모타입)으로 여러 가지 타입을 받을 수 있다.

instanceof

타입 확인 연산자. return type: blooean

조건문으로 걸러주지 않으면 유효하지 않은 타입 접근시 ClassCastException error 발생

다형성 배열(상위타입배열)

동일 타입만 저장 가능한 배열에 부모타입을 지정하여 서로 다른 타입을 저장할 수 있다.

다형성의 4가지 전제조건

  • 상속관계, override(재정의), upcasting, 동적바인딩


추상 클래스와 인터페이스

다형성의 보장

상위 클래스에서 명령하면 하위 클래스에서 반드시 응답(동작)해야한다.

딱히 하위 클래스에서 모든 클래스에 대해 무조건 override를 할 의무는 없기에 재정의를 하지 않아도 에러는 발생하지 않음. 하지만 꼭 재정의가 필요한 경우 재정의를 강제할 방법이 필요.

추상메서드

메서드의 구현부(body)가 없는 메서드. abstract
불완전한 메서드.

추상클래스

불완전한 클래스.
다형성을 일부 보장하기 위한 목적. 서로 비슷한 클래스의 공통부분을 묶을 때 사용.
상위클래스에서 사용. 단독 객체 생성 불가.
구현된 메서드를 가질 수 있다.

하위 클래스가 상속받은 상위 클래스 내의 추상메서드를 재정의하도록 함(하지 않을 시 에러)

인터페이스

서로 다른 동작의 클래스도 공통 기능을 정의해 상속구조도 사용 가능할까?

추상메서드로만 이루어진 클래스.
인터페이스 클래스- interface. 하위클래스-implements
단독 객체 생성 불가. 상위클래스로서 사용. 구현메서드 가질 수 없음(추상메서드, final static 상수만 가능)
abstract 생략 가능.

final static

한 번 결정한 값을 수정할 수 없음
public final static int MINNUM = value;

인터페이스와 다중상속
자바는 기본적으로 단일상속 언어이다.
추상클래스를 extend하고 필요한 인터페이스만 implements해 사용할 수 있다.

public class Dog extends Animal implements Pet, Play{}

인터페이스가 인터페이스를 상속할 수 있다.

추상클래스와 인터페이스

  • 공통점
    다형성을 보장하기 위해서 만들어짐.
    단독 객체 생성 불가.
    추상메서드 포함 가능.
    상위클래스의 역할로 사용됨.
  • 차이점
    • 추상클래스: 다형성을 일부 보장. 서로 비슷한 클래스의 공통 부분을 묶을 때 사용. 추상메서드(+구현메서드)
    • 인터페이스: 다형성을 완전히 보장. 서로 다른 클래스의 공통부분을 묶을 때 사용. 추상메서드(+ final static 변수(상수))


자바 최상위 클래스

Object

클래스 생성 시 생략되어 자동으로 extends 되는 클래스.
(java.lang.Object)

Object class의 toString

객체의 주소를 문자열로 출력.

값을 출력하고 싶다면 override 하면 됨

super.toString()
재정의 후 상위 클래스의 toString 호출



profile
고민고민고민

0개의 댓글