[Java]타입변환, 추상 메소드, 추상 클래스

dnjsrms.lee·2022년 6월 3일
0

Java

목록 보기
7/14
post-thumbnail

객체의 타입 변환

다형성의 3요소 : 상속(중복되는 코드 최소화) + 오버라이딩(부모가 가진 메소드 자식이 재정의) + 타입 변환

  • 묵시적 타입 변환 = 자식 객체를 부모 타입의 참조변수에 할당하는 것\= (double avg = 49)
  • 객체는 반대임(자식이 부모로부터 물려받고 자기가 더 추가 해서 더 많은 정보를 갖고 있음
  • 큰 크기의 객체가 작은 크기의 객체로 할당되는 것이니 반대 개념이라고 생각할 수 있음
  • 하지만 반대가 아님. 데이터가 잘렸다, 훼손되지 않았다의 관점으로 보면 맞는 말이 되는 것임

부모객체를 자식 변수에 할당하는 것은 문법적으로 불가능

즉, 자식 → 선조 타입의 변수에 할당 가능. → 묵시적 형(타입) 변환

형제 레벨에서는 형변환이라는 것 자체가 없음. 불가능 : 무조건 error

추상메소드

: { } 없음 / 구체적이지 못함 { 메소드 바디 }

: 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드

: 호출 불가능

abstract 반환타입 메소드이름();

목적 : 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함

  • 선언부만 존재, 구현부는 없음 → 작성되지 않은 구현부를 자식 클래스에서 오버라이딩하여 사용하는 것

추상클래스

: 하나 이상의 추상 메소드를 포함하는 클래스 → 무조건 abstract 붙여줘야 함. 없으면 error

: 다형성을 가지는 메소드의 집합을 정의할 수 있도록 해줌

: 추상 클래스는 객체 생성이 불가능하다

⇒ 반드시 사용되어야 하는 메소드를 추상 클래스의 추상 메소드로 설정해두면 이 클래스를 상속받는 모든 클래스에서 이 추상 메소드를 무조건 재정의해야 함

abstract class 클래스이름 {
...
abstract 반환타입 메소드이름():
...
}

최상위 부모가 추상 클래스 ⇒ 이 클래스에는 추상 메소드가 하나 이상 존재한다

추상 클래스의 역할

⇒ 최상위 부모가 추상 클래스? ⇒ 자식 클래스에서는 상속을 통해 추상 메소드 전부를 오버라이딩 해야함 ⇒ 그래야 정상적인 클래스가 됨(new 할 수 있게 됨)

추상클래스

  1. 일반 멤버 변수 가질 수 있음 → 자식 클래스 쪽으로 상속되게 할 수 있음
  2. { }(바디)가 있는 (구현된)메소드도 가능함

다형성(Polymorphism) 적용

: 다형성으로 인해 유지보수의 편의성이 향상됨

: 다형성을 적용하려면 ? → 상속, 메소드 오버라이딩, 타입 변환 필요

: 리모콘으로 이해하면 쉬움 → 자식객체는 부모타입의 참조변수에 할당 가능

→ 리모콘이 참조하는 객체에 따라 동작한다

profile
little by little slowly

0개의 댓글