다형성

dawn·2021년 3월 14일
0

자바

목록 보기
3/9

접근 제한자

  • public 모든 클래스에서 접근 가능
  • protected : 클래스에 적용 불가능, 자식 클래스가 아닌 다른 패키지에 소속된 클래스 접근 불가능
  • default : 다른 패키지에 소속된 클래스 접근 불가능
  • private : 클래스에 적용 불가능, 모든 외부 클래스 접근 불가능

1. 다형성

다형성은 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말한다. 다형성을 이용하면 객체는 부품화가 가능하다. 예를 들어 자동차를 설계할 때 타이어 클래스 타입을 적용했다면 이 클래스를 상속한 실제 타이어들은 어떤 것이든 상관없이 장착(대입)이 가능하다.

자식타입은 부모 타입으로 자동 타입 변환이 가능하다. 자동 타입 변환의 개념은 자식은 부모의 특징과 기능을 상속받기 때문에 동일하게 취급될 수 있다는 것이다.

부모 타입으로 자동 타입 변환된 이후에는 부모 클래스에 선언된 필드와 메소드만 접근이 가능하다.
비록 변수는 자식 객체를 참조하지만 변수로 접근 가능한 멤버는 부모 클래스 멤버로만 한정된다.
그러나 예외가 있는데, 메소드가 자식 클래스에서 오버라이딩되었다면 자식 클래스의 메소드가 대신 호출된다.

2. 강제 타입 변환

자식 타입에 선언된 필드와 메소드를 꼭 사용해야 할때 강제 타입 변환을 해서 다시 자식 타입의 필드와 메소드를 사용하는 것을 말한다.

3. 추상클래스

객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상 클래스라고 한다.
추상클래스는 객체를 직접 생성해서 사용할 수 없다.

추상클래스의 용도
1. 실체 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적
2. 실체 클래스를 작성할 때 시간을 절약

  • 공통적인 필드와 메소드는 추상 클래스인 Phone에 모두 선언해 두고, 실체 클래스마다 다른 점만 실체 클래스에 선언하게 되면 실채 클래스를 작성하는데 시간을 절약할 수 있다.

    추상 클래스를 설계할 때, 하위 클래스가 반드시 실행 내용을 채우도록 강요하고 싶은 메소드가 있을 경우, 해당 메소드를 추상 메소드로 선언하면 된다.

    [public | protected] abstract 리턴타입 메소드명(매개변수, ...);
    일반 메소드 선언과의 차이점은 abstract 키워드가 붙어 있고 메소드 중 괄호가 없다.

    부모클래스에 기본 생성자가 없고 매개 변수가 있는 생성자만 있다면 자식 생성자에서 반드시 부모 생성자 호출을 위해 super(매개값, ...)를 명시적으로 호출해야 한다.

profile
안녕하세요

0개의 댓글