Programming/Java

[JAVA] 자바의 객체지향

Supreme_YS 2021. 10. 8. 15:17

남궁성님의 자바의 정석을 기반으로 합니다.


* 객체지향 언어의 등장 배경

- 소프트웨어의 빠른 변화에 대응하지 못함 -> 해결책으로 객체지향언어 도입(절차형 -> 객체지향형)

 

* 객체지향 언어의 특징

- 코드의 재사용성이 높다. 

- 유지보수가 용이하다.

- 중복 코드 제거

 

* 핵심 개념

- 캡슐화, 추상화, 다형성, 정보은닉, 상속

 

* 클래스와 객체

- 클래스 : 객체를 정의해 놓은 것, 객체를 생성하는데 사용

- 객체 : 실제로 존재하는 것, 사물 또는 개념 - 속성(변수)기능(메서드)으로 이루어져있다.

예) 클래스-제품 설계도 , 객체-제품 / 클래스-붕어빵 기계, 객체-붕어빵

// 속성 예제
class Tv{
    String color;  // 색깔
    boolean power; // 전원상태
    int channel;   // 채널
    
    void power()       { power = !power; } 
    void channelUp()   { channel++; }
    void channelDown() { channel--; }
}

- 인스턴스 : 특정 클래스로부터 생성된 객체, 반면에 일반 객체는 모든 인스턴스를 대표하는 일반적 용어.

- 인스턴스화 : 클래스로부터 객체를 만드는 과정

 

* 클래스(설계도)와 객체(제품) 필요성 

- 객체(제품)를 생성하기 위함.

- 객체는 사용하기 위해 만듦 

- 객체가 가진 속성과 기능을 사용하는 것

 

* 클래스 작성 방법

- 소스파일의 이름은 public class의 이름과 동일해야 한다.

- 만일, public class가 없다면 소스파일에 포함된 여러 클래스 중의 이름을 아무거나 사용해도 된다.

- 자바는 대소문자를 구분하기 때문에 대소문자도 일치시켜야 한다. 

 

* 객체의 생성과 사용 순서

1. 클래스를 만든다.

2. 클래스 타입의 참조변수를 생성한다.

3. 객체를 생성한다.

4. 객체를 사용한다. (객체가 갖고있는 변수와 메서드를 사용한다)

 

* 하나의 인스턴스를 여러개의 참조변수가 가리키는 것은 가능 (예. TV 클래스의 참조 변수 t1, t2...등 생성 가능)

* 여러 인스턴스를 하나의 참조변수가 가리키는 것은 불가능 (예. 변수는 하나의 값만 저장 가능하다. 참조 변수도 변수이기 때문에 불가능)