다형성

천소진·2022년 9월 26일
0

Study

목록 보기
8/29

다형성 (polumorphism)

: 하나의 객체가 여러가지 타입을 가질 수 있는 것.
: 상위 클래스 타입의 참조 변수로 하위 클래스 타입의 인스턴스를 참조하여 구현.

참조변수(Parameter)

: 상위 클래스 타입의 참조변수로 하위 클래스의 인스턴스를 사용할 때 참조변수가 사용할 수 있는 멤버의 개수가 실제 인스턴스의 멤버 개수보다 같거나 적어야 함.
: 하위 클래스에서 상위클래스 타입의 인스턴스를 참조할 수 없음
==>하위 클래스는 상위 클래스보다 멤버의 개수가 많을 수 있기 때문.

참조변수의 타입 변환
1. 서로 상속 관계에 있는 클래스 일때
2. 하위 클래스 타이에서 상위 클래스 타입으로의 변환은 생략가능.
3. 상위 클래스 타입에서 하위 클래스 타입으로 변환할 때는 반드시 명시해야함.

  • 참조변수 instanceof 클래스이름
    : 왼쪽에 전달된 참조변수가 실제로 참조하는 인스턴스의 타입인지 아닌지를 알고 싶을 때 사용
    : 같으면 true 다르거나 null일경우 false 반환

추상 클래스 (abstract class)

: 한개 이상의 추상메소드를 포함하는 클래스
: 메소드의 집합을 정의 할수 있도록 해줌.
: 동작이 정의 되어 있지 않은 추상메소드를 포함하고 있어 인스턴스는 생성 할 수 없음.
: 인스턴스를 생성하려면 상속을 통해 하위 클래스를 만들고 하위 클래스에서 모든 메소드를 오버라이딩을 해야함.

추상메소드 (abstract method)
: 하위 크래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드.
: 추상 메소드가 포함된 클래스를 상속 받는 하위 클래스가 구현할 수 있게 하기 위함.
: 선언부만 존재. 구현부는 하위 클래스에서 오버라이딩하여 사용.
==> 반드시 사용할 메소드를 추상메소드로 선언해 놓으면 하위 크래스가 상속받을 때 반드시 추상메소드를 재정의 해야함.

인터페이스 ( interface)

: 자바는 하나의 하위 클래스는 하나의 상위 클래스만을 상속받는 단일 상속의 특징을 가졌기 때문에 상속이 아니더라도 다양한 동작을 할 수 있게 하기 위해 사용.
:일종의 추상클래스로 일반 클래스와 마찬가지로 기본 틀을 제공하면서 클래스 사이의 중간역할 까지 담당함.
: 인터페이스는 추상 메소드와 상수만을 포함 할 수 있음.
: 모든 멤버는 public static final 이며, 모든 메소드는 public abstract 이어야 하며 생략 가능함.
: 자신이 직접 인스턴스를 생성할 수 없으므로 구현해줄 클래스를 작성해야함.
: 구현할 추상 메소드는 abstract를 지우고 작성하며, 만약 모든 추상 클래스를 구현하는게 아니라면 abstract를 사용하여 선언은 해주어야함.
: 인터페이스는 인터페이스로부터만 상속 받을수 있으며, 여러개를 상속받을 수 있음.
: 상속과 구현을 동시에 할 수 있음.

<선언>

접근 제어자  interface 인터페이스 이름 {
	public static final 타입 상수이름 = 값;
    
    public abstract 메소드 이름 (파라미터 ,....);
 }

<구현>

class 클래스이름 implements 인터페이스이름 {}
  • 장점
  1. 일관되고 정형화된 개발을 위한 표준화 가능.
  2. 작성과 구현을 동시에 진행 할 수 있어 개발 시간이 단축됨.
  3. 클래스 간의 독립적인 프로그래밍이 가능.

내부 클래스 (inner class)

: 하나의 클래스 안에 선언된 다른 클래스

  • 장점
  1. 내부클래스에서 외부클래스의 멤버에 접근이 쉬움.
  2. 서로 관련있는 클래스가 묶여 있어 코드의 캡슐화 가능.
  3. 외부에서는 내부에 접근이 불가해 코드의 복잡성을 줄일 수 있음.
  • 종류
  1. 정적클래스(static) : 메소드에 사용될 때 선언.
  2. 인스턴스 클래스 (instance) : 외부클래스의 인스턴스 변수나 메소드로 사용될 때 선언.
  3. 지역클래스 (local) : 메소드나 초기화 블록에 선언.
  4. 익명클래스 (anonymous) : 이름을 가지지 않는 크래스로 선언과 동시에 객체를 생성하는 일회용 클래스

참고사이트 링크텍스트

0개의 댓글