다형성(polymorphism),오버라이딩(overriding),오버로딩(overloading)

2020. 3. 11. 12:51자바 Java/자바 공부 java study

반응형

 

다형성(polymorphism)이란?

하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미합니다.

자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있습니다.

다형성은 상속, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나입니다.

 

type이 여러개다,  

여러개의 타입을 하나의 코드로 처리할수 있다 

한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 구현한 기능

 

자식클래스의 객체 내부에는 부모클래스로 만든 객체가 포함되어있기 때문에 

부모클래스의 참조변수로 자식클래스의 객체를 참조할 수 있음. 

상속받았다면 자기자신의 타입 아니고 부모타입의 객체도 참조할 수 있다. 

 

 

  부모타입 변수명=new 자식타입();

 

 

 

객체 지향에서의 다형성

전제: 부모클래스스의 참조변수로 자식클래스의 객체를 참조할 수 있다.

(자식 클래스의 객체는 부모클래스로 만든 객체를 포함하기 때문에)

 

-부모 클래스의 참조변수로 자식클래스의 객체를 참조했을때, 부모 클래스에 존재하는 멤버에만 접근 가능함. 

-부모클래스의 참조 변수로 자식클래스의 객체를 참조해서 부모 클래스에 존재하는 멤버함수 호출 시 

  자식클래스에서 해당 메소드를 오버라이딩 했다면 실제 호출되는 함수는 

  자식에서 오버라이딩 한 메소드가 호출됨 ( 동적 바인딩) 

 

 

 

class Parent { ... }

class Child extends Parent { ... }

...

Parent pa = new Parent(); // 허용

Child ch = new Child();   // 허용

Parent pc = new Child();  // 허용

Child cp = new Parent();  // 오류 발생.

 

 

 

오버라

 

반응형