하나의 코드가 여러 자료형으로 구현되어 실행 되는 것을 말합니다.
다형성(polymorphism) :
하나의 코드가 여러가지 자료형으로
상속과 더불어 객체지향 프로그래밍의 가장 큰 특징
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
정보은닉과 캡슐화의 차이점
캡슐화는 객체지향 패러다임 중 하나로,
중요한 데이터를 보존하고 보호하는 것이다.
일반적으로 연관있는 변수와 함수를
클래스로 묶는 작업을 말한다.
반면, 은닉화는 객체에서 속성을
직접 접근하지 못하게 숨기는 것이다.
절차지향과의 차이점
객체지향은 절차 지향과 동일한 순서로 실행 된다.
다만 절차지향은 데이터 중심으로 함수를 구현하고
이에 반해 객체지향은 기능을 중심으로 메소드를 구현하게 된다.
절차지향지향 언어를 사용한다면,
말 그대로 실행순서,
절차가 더 중점이 되고, 객체지향 언어를 사용한다면,
필요한 객체들의 종류와 속성등이 더 중점이 됩니다.
즉, 절차 지향의 반대는 객체지향이 아니고,
객체 지향의 반대는 절차지향이 아닙니다.
객체 지향의 프로그래밍이란 일의 순서대로 프로그래밍 하는 것이 아닌
여러 객체의 협력을 통해 프로그램을 구현하는 것 입니다.
객체 지향 언어로 프로그래밍 하면 공통으로 사용하는 부분을
수정하지 않고도 프로그램에 새 기능을 쉽게 추가 할 수 있습니다.
따라서 객체지향 언어로 프로그램을 잘 설계하면 유지보수가 쉽고 확장성이 좋습니다.
이름 그대로 쓰레기를 수집하는 기능 입니다.
여기에서 쓰레기란 더 이상 사용하지 않는
메모리를 의미합니다. C나 C++에서는 필요없는
메모리 사용 해제를 프로그래머가 직접 해야했지만,
자바는 가비지 컬렉터가 사용하지 않는 동적 메모리를 주기적으로 수거 합니다.
상위 클래스에 정의 된 메서드 중
하위 클래스와 기능이 맞지 않거나 추가 기능이 필요한 경우
같은 이름과 매개변수로 하위 클래스에서 재정의 함
vc. 가상메서드 calc price 가상 메서드의 경우는 타입과 상관없이
실제 생성된 인스 턴스의 메서드가 호출 되는 원리
자바에서 어떤 클래스의 기능을 확장하여
새로운 클래스를 만들기 위해 상속을 한다 이때사용하는 예약어
상위 클래스(Customer) 에 private 으로 선언된 변수나 메서드는
하위 클래스(VIPCustomer) 에서 사용할 수 없음
상위 클래스에 변수나 메서드를 선언할 때
하위 클래스에서도 가시 성이 허용되도록 protected 예약어를 사용하여 선언하면
하위 클래 스를 제외한 외부 클래스에 대해서는 private 과 동일한 기능
단 동일 패키지내에서는 가시성이 허용 됨