자바 객체 지향 프로그래밍(Object-Oriented Programming)
1. 다형성
생성하는 객체의 타입이 여러 형태로 나타나게 하여 다양한 기능을 이용할 수 있도록 하는 것이다.
즉, 여러 개의 개별적인 클래스를 하나의 부모클래스 객체로 통합 관리하여 효율성을 높인다.
public class Car{
Tire tire1 = new koreaTire();
Tire tire2 = new japanTire();
}
자바에서 다형성을 지원하는 기능으로 오버로딩과 오버라이딩이 있다.
오버로딩(중복정의)
함수명은 같지만 매개변수의 자료형태를 달리 주어서 재정의 해주는 것이다.
정적바인딩(실행할 메소드를 컴파일 하는 시간에 결정)
public void test(int x)
public void test(double x)
test(10) 호출하면 어떤 메소드 호출?
=> 1번이 호출 됨
오버라이딩(메소드 재정의) - 상속
상속받은 하위클래스가 상위클래스의 상속 받은 메소드를 다른 기능을 가진 메소드를 사용하고 싶을 때 재정의하여 사용한다.
static으로 선언한 것은 재정의가 불가하다.
동적바인딩(실행할 메소드를 컴파일이 아닌 실행시간에 결정)
-부모클래스
public void test(int x){
x=x+100;
}
-자식클래스
public void test(int x){
x=x-100;
}
* 오버로딩(중복정의)와 오버라이딩(재정의)의 차이
메소드의 오버로딩과 메소드의 오버라이딩의 차이점을 살펴보면
오버로딩은 같은 이름의 메소드를 여러개 정의 하는 것이며,
오버라이딩은 슈퍼클래스에 있는 상속받은 메소드를 다시 정의해서 내용을 변경하는 것이다.
2. 상속
기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것을 말한다.
코드를 재사용하여 적은 양의 코드로 새로운 클래스를 작성할 수 있다.
그렇기 때문에 중복이 줄어들어 코드의 변경 및 추가가 쉬워져 유지보수가 용이해진다.
C++에서는 여러 클래스로부터 상속받는 다중상속을 허용하지만, 자바에서는 단일 상속만 허용한다.
상속받을 때는 extends, 상속받은 내용을 사용할 때는 super 사용한다.
상속의 목적
1. 코드의 재사용성을 위해서 사용한다.
2. 다형성을 구현한다.
3. 캡슐화
객체(내부)를 캡슐(외부)로 감싸 그 내부를 보호하고 이를 볼수 없게 하는것을 뜻한다.
캡슐화를 하는 이유는 정보 은닉화 때문이다.
자바에서는 객체는 메소드와 필드로 구성되어 클래스라는 캡슐로 메소드, 필드의 직접적인 접근을 막고 메소드의 구현 내용도 알 수 없다.
다만, 일부 메소드와 필드는 객체 외부와의 인터페이스를 위해 노출한다.
'IT' 카테고리의 다른 글
Model2 MVC 패턴 (0) | 2017.05.24 |
---|---|
배열/배열리스트/연결리스트 (0) | 2017.05.24 |
정규화 (0) | 2017.05.23 |
List와 Map (0) | 2017.05.16 |
[토드/TOAD]토드 단축키 (0) | 2017.05.10 |