작은 부품인 객체를 만들고 이렇게 만들어진 객체들을 결합하여 하나의 프로그램을 만드는 것
객체 : (프로그래밍에서 객체) 프로그램에서 구현하고자 하는 모든 대상
클래스 : (현실세계)객체를 추상화 한 것
추상화 (객체생성=인스턴스화)
(현실세계)객체 -------------> 클래스 -------------> (프로그래밍)객체
말똥이 25세 class Person{ person p1;
String name; p1.name = "말똥이";
Int age; } p1.age = "25";
재사용성
상속으로 불필요한 코드의 중복을 피하고, 코드를 재사용할 수 있어 효율적이다.
유지보수의 우수성
캡슐화로 외부 데이터를 보호하여 필요한 부분만을 수정할 수 있어서 안전하며 경제적이다.
또한 상속을 통해 원래의 기능을 활용할 수 있다.
업무 분담 유리
클래스 단위로 모듈화 되어 있어 대형 프로젝트에 적합하며, 테스트가 용이하다.
*객체지향 프로그램의 단점 : 대체적으로 실행속도가 느리며, 코딩 난이도가 상승할 수 있다.
추상화
공통적인 특성을 활용해서 필요한 부분만을 간소화한다.
ex) 지하철 노선도
지형정보나 정확한 거리를 제거하고,
승차역과 환승역의 정보를 잘 보이게 표시
캡슐화
필요한 데이터와 정보를 그룹화한 것
변수와 메소드를 클래스로 묶어서 관리하는 것은 재활용을 용이하게 하며, 정보 은닉의 장점을 가져올 수 있다.
상속
상위 클래스의 속성과 특성을 하위 클래스에 물려줄 수 있다.
코드 재사용성에 유리하다.
다형성
어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태의 성질을 가질 수 있다.
*오버로딩 : 메소드의 중복 정의
메소드 이름이 같더라도,
매개변수의 개수 또는 타입, 순서를 다르게 하여 다른메소드를 정의하는 것
*오버라이딩 : 메소드 재정의 > 상속받아서 새롭게 덮어씌우기
상속받은 메소드를 자식클래스가 새롭게 정의하는 것