책/기술 관련

자바 객체지향의 원리와 이해 03. 자바와 객체 지향

Mev01 2022. 2. 8. 15:43

http://www.yes24.com/Product/Goods/17350624

 

스프링 입문을 위한 자바 객체 지향의 원리와 이해 - YES24

자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량 애플리케이션 프레임워크인 스프링은 자바와 객체 지향이라는 기반 위에 굳건히 세워져 있다. 따라서 스프링을 제대로 이해하고 활용

www.yes24.com

(스프링 입문을 위한 자바 객체 지향의 원리와 이해, 2015)을 학습하고 개인 학습용으로 정리한 내용입니다.

 

객체지향 4대 특성

  • 캡슐화(Encapsulation)
  • 상속(Inheritance -> extends)
  • 추상화(Abstraction)
  • 다형성(Polymorphism)

 

 

추상화


추상화: 구체적인 것을 분해해서 관심 영역에 있는 특성만을 가지고 재조합하는 것 = 모델링

객체: 세상에 존재하는 유일무이한 사물

클래스: 같은 속성과 기능을 가진 객체를 총칭하는 개념

클래스의 static 변수는 스태틱 영역에 클래스와 같이 저장된다.

 

 

상속


상위 클래스의 특성을 확장해 나가는 것이다.

상속은 다음과 관계를 만족한다.

하위 클래스 is a kind of 상위클래스

 

인터페이스의 경우, be able to(= 어떤 것을 할 수 있는) 형태로 나타내는 것이 좋다.

 

 

다형성


public class Animal{
    public void print1(){}
    public void print2(){}
}

public class Bird extends Animal{
    public void print2(){}
    public void print3(){}
}

Animal a = new Animal();
Animal b = new Bird();
Bird c = new Bird();

위와 같은 경우

a는 힙 영역에 Animal 객체의 인스턴스를 가지고 있기 때문에, print1과 Animal의 print2를 호출 가능하다

b는 힙 영역에 Animal + Bird 객체 중 Animal의 인스턴스를 가지고 있기 때문에, print1과 오버라이딩된 Bird의 print2를 호출 가능하다.

c는 힙 영역에 Animal + Bird 객체 중 Bird의 인스턴스를 가지고 있기 때문에, print1, 오버라이딩된 Bird의 print2, print3를 호출 가능하다.

 

 

캡슐화


public: 모두 접근 가능

protected: 상속이나 같은 패키지 내 접근 가능

default: 같은 패키지 내 접근 가능

private: 본인만 가능