정의

  • 객체(Object) 란? 
    물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것을 식별 가능한 것.
  • 객체 모델링? 
    현실 세계 객체의 속성과 동작을 추려내어 소프트웨어 객체의 필드와 메소드로 정의하는 과정
  • 객체지향 프로그래밍? 
    부품에 해당하는 객체를 먼저 만들고, 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법

Object Oriented Programming 특징

1. Inheritance (상속)

[1] extends (class 상속)
[2] implementation (interface / class 구현)

 

2. Polymorphism (다형성)

: 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있는 성질 (같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질)
[1] Overloading: 메소드 다중정의
[2] Overriding: 메소드 재정의

[3] Interface : one interface, multiple implementation
하나의 인터페이스를 사용하여 다양한 구현 방법 제공 - 하나의 클래스나 함수가 다양하게 동작

 

3. 캡슐화(Encapsulation)
1) information hiding: 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것
2) access modifier(접근 제한자) 를 사용하여 노출 여부 결정

목차

  1. 상속 (클래스간의 관계)
  2. Overriding (메소드 재정의)
  3. final 클래스와 final 메소드
  4. instanceof 연산자
  5. 참조변수와 인스턴스의 연결

1. 상속 (클래스간의 관계)

: 기존의 클래스를 재사용해서 새로운 클래스를 작성부모클래스(객체)의 멤버들을 자식클래스(객체)가 물려받는것

class Parent {}
class Child extends Parent {}

 

  1. 상속을 사용하는 이유 - 기존에 만들어놓은 클래스의 재사용, 확장을 위해 사용. 

  2. 자바에서는 단일상속만이 가능

  3. 부모클래스(super)와 자식클래스(sub)가 존재

  4. Object 클래스 - 모든 클래스의 최상위

    : 모든 클래스는 Object 클래스에 정의된 11개의 메소드를 상속. toString(), equals(Object obj), hashCode() ...

  5. private 객체변수는 상속 안됨

  6. super: 상위 클래스의 멤버나 메소드에 접근하기 위함.

 

2. Override (메소드 재정의)

자식 클래스에서 동일한 매소드를 재정의.

부모 객체의 메소드는 숨겨지기 때문에, 자식 객체에서 메소드를 호출하면 오버라이딩된 자식 메소드가 호출

 

- 접근 제한을 더 강하게 오버라이딩 할 수 없음

- 새로운 예외를 throws할 수 없음

 

 

 

3. final 클래스와 final 메소드

해당 선언이 최종 상태이고, 결코 수정될 수 없음. final 키워드 지정시 상속과 관련됨.

 

- final class: 상속할 수 없는 클래스(ex. String)

- final method: Overriding 할 수 없는 메소드

- final field: 초기값 설정 후, 더 이상 값을 변경할 수 없는 필드

 

 

4. instanceof 연산자

참조변수가 참조하는 인스턴스의 실제 타입을 체크하는데 사용.

if ( c instanceof Car) { ... }

 

 

 

5. 참조변수와 인스턴스의 연결

  • 멤버변수가 중복정의된 경우, 참조변수의 타입에 따라 연결되는 멤버변수가 달라진다. (참조변수타입에 영향받음)
  • 메서드가 중복정의된 경우, 참조변수의 타입에 관계없이 항상 실제 인스턴스의 타입에 정의된 메서드가 호출된다.
    (참조변수타입에 영향받지 않음) -> Overriding

+ Recent posts