다형성

|

다형성(Polymorphism) : '다양한 형태를 가지는 성질'

자바에서의 다형성이란 슈퍼클래스를 상속받은 하위 클래스의 객체가 슈퍼클래스의 객체로도 사용되고 하위클래스의 객체로도 사용되는 등 다양한 형태를 취할 수 있는것.

 

하위클래스의 객체는 슈퍼클래스의 객체가 될 수 있지만, 슈퍼 클래스의 객체는 하위 클래스의 객체가 될 수 없다. 

('모든 학생은 사람이라고 볼 수 있지만, 그렇다고 모든 사람이 학생이라고 볼수는 없다')

 

하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미

 

오버로딩은 다형성의 한 예

 

다형성이란 하나의 클래스가 다양한 동작 방법을 가지고 있는데 이것을 다형성이라고 할 수 있겠다. 

 

같은 방식으로 요청하지만 다양한 결과물을 냄.

 

<예시>

abstract class Animal{

  abstract void cry();

class Dog extends animal{

  void cry(){

    System.out.println("멍멍");

  }

}

class Cat extends animal{

  void cry(){

    System.out.println("야옹");

  }

}

class Duck extends animal{

  void cry(){

    System.out.println("꽥꽥");

  }

}

class PolyTest{

  pubic static void main(String args[]){ 

    Animal animals[] = {new Dog(), new Cat(), new Duck()};   

    // Animals 이라는 클래스의 객체를 담는 animals 라는 배열을 선언하고 Dog라는 클래스의 객체를 새로 생성하여 0번째 요소에, Cat라는 클래스의 객체를 새로 생성하여 1번째 요소에, Duck라는 클래스의 객체를 새로 생성하여 2번째 요소에 저장한다.

    for(int  i=0;, i<animals.length;, i++){

    // 정수 값을 담는 i라는 변수에 0을 저장하고 i를 1씩 증가시키면서 i가 animals 배열의 크기(3)보다 작을 동안 {}안을 반복해라

      animals[i].cry();

      // animals 배열의 i번째 요소에 저장된 값 안의 cry() 메소드를 호출한다.

    }

  }

}

 

* 배열명.length : 배열의 요소(혹은 배열의 크기)가 몇 개인지 알 수 있다.

'Java' 카테고리의 다른 글

예외 - 예외 던지기  (0) 2019.06.10
예외 - 문법  (0) 2019.06.07
인터페이스  (0) 2019.06.07
여러가지 수식자(final, static, abstract)  (0) 2019.06.07
abstract  (0) 2019.06.07
And