Notice
Recent Posts
Recent Comments
Link
-
객체지향 프로그래밍 :: 다형성 본문
OOP의 특징
- 캡슐화(Encapsulation) : 데이터와 메서드를 하나의 단위로 묶는 것
- 정보은닉 : 외부에서 객체상태를 바꾸거나 허가되지 않은 동작으로부터 보호
- 추상화(Abstraction) : 외부에서 사용해야 하는 기능은 공개, 제한해야 하는 기능은 은폐
- 다형성(Polymorphism) : 같은 메소드에 대해 클래스에 따라 다른 행위를 하게 되는 특징
- 상속성(Inheritance) - 기존에 있던 클래스를 바탕으로 새로운 클래스를 만들 수 있는 성질
이번엔 이 중 '다형성'에 대해 알아보고자 한다.
다형성
- 여러 가지 형태를 가질 수 있는 능력.
- 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 되어있다.
- 조상 클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 한 기능?!?!
출처 : 자바의 정석
이라고 하는데 확 와닿지 않는다..
인터넷 여기 저기를 찾아보면 다형성은
"하나의 클래스나 매서드가 다양한 방식으로 동작이 가능한 것" 이라고 한다.
훨씬 와닿는 설명이다.
다형성은 Overriding과 Overloading의 형태로 구현되거나
'매개변수의 다형성'의 형태로도 구현된다.
예를 들면,
1 2 3 4 5 6 7 8 9 10 11 | class Account{ int money } class shinhan extends Account {} class woori extends Account {} class kb extends Account {} class Customer{ int money 10000; } | cs |
이렇게 클래스가 정의되어 있고, Customer클래스에 저금(input)메서드를 추가하고 싶다면,
1 2 3 4 | void input (Account a, int money){ this.money -= money; a.money+money; } | cs |
위와 같이 shinhan, woori, kb 클래스의 조상클래스인 Account 타입의 참조변수를 매개변수로 넘김으로써 Account클래스의 자손타입의 참조변수는 어느것이나 매개변수로 넘길 수 있다.
'언어 > 자바' 카테고리의 다른 글
자바를 시작하기 전에 :: 객체지향언어 (0) | 2016.12.18 |
---|---|
자바를 시작하기 전에 :: 명명규칙 (0) | 2016.12.18 |
객체지향 프로그래밍 :: 오버라이딩 (0) | 2016.11.30 |
객체지향 프로그래밍 :: 오버로딩 (0) | 2016.11.30 |
자바를 시작하기 전에 :: JVM(Java Virtual Machine) - 2 (0) | 2016.11.29 |
Comments