자바는 객체지향 언어이다.
라는 말을 많이 들어봤을 것이다.
그렇다면 객체지향 언어는 무엇인지 어떤 특성이 있는지 알아봅시다.
그렇다면 객체는 무엇일까?
넓은 의미에서는 실세계에 존재하거나 생각할 수 있는 것을 말한다.
프로그래밍에서의 객체는 속성과 기능을 가진 하나의 단위로 볼 수 있다.
객체지향적으로 프로그램을 설계하면 이러한 장점을 얻을 수 있다.
객체지향적인 설계의 이점들을 잘 살릴 수 있는 객체지향 언어의 특징들이 있다.
자바에서는 클래스라는 틀을 객체를 생성한다.
모든 변수와 함수는 클래스 안에서 구현된다.
클래스를 통해 생성된 실체(인스턴스)를 객체라고 부른다.
동물 이라는 부모 클래스의 특성과 기능들을 강아지 나 고양이 같은 자식 클래스가 모두 물려받을 수 있다.
생물학적으로 쓰이는 다형성은 동일종의 생물이면서도 형태나 성질이 다양한 상태이다.
프로그래밍에서 쓰이는 다형성도 이와 비슷한 의미이다.
프로그램 요소가 여러 가지 타입을 가지는 것이 허용되는 성질이다.
다형성을 구현하는 대표적인 방법에는 오버로딩과 오버라이딩이 있다.
결과적으로 보면 공통된 속성과 기능을 추출하여 모아놓았다는 점은 동일하다.
그러나 개념적으로는 상속은 하위 클래스에서 동일한 기능을 사용하기 위해 상위 클래스의 기능을 가져다가 사용하는 것이고,
추상화는 기존 클래스들의 공통 요소를 뽑아 상위클래스를 만드는 것이 차이점이다.