[Java] 02. 기본 문법 및 응용 (Java의 클래스, 객체, 변수의 종류)


0. 객체지향 프로그래밍이란? (Object Oriented Programming)

  • 객체란?
    • 주체가 아닌 것, 주체가 활용하는 것
      • 우리 주변에 있는 모든 것으로 프로그래밍의 대상 : 사물, 개념, 논리 …
  • 객체지향 프로그래밍
    • 주변의 많은 것들을 객체화 해서 프로그래밍 하는것
    • 객체지향은 객체를 많이 만드는 것을 추천한다?? YES!
  • 객체지향 프로그래밍의 장점
    • 블록 형태의 모듈화된 프로그래밍
      • 신뢰성 높은 프로그래밍이 가능하다.
      • 추가/수정/삭제가 용이하다.
      • 재사용성이 높다.
  • 현실 세계 객체, 클래스, 프로그램의 객체(instance, object)의 관계
    • 현실의 객체가 갖는 속성과 기능은 추상화(abstraction)되어 클래스에 정의된다.
    • 클래스는 구체화 되어 프로그램의 객체(instance, object)가 된다.
  • 실생활에서의 예) 붕어빵 틀 = Type, 붕어빵 = 객체
    • 프로그램의 클래스와 객체
      • 클래스
        • 객체를 정의해 놓은 것 즉 객체의 설계도, 틀
        • 클래스는 직접 사용할 수 없고 직접 사용되는 객체를 만들기 위한 틀을 제공할 뿐
      • 객체(instance, object)
        • 클래스를 데이터 타입으로 메모리에 생성된 것
      <클래스>                                       <객체>
- 객체를 정의해 놓은 것                         - 클래스를 구체화 한 것
- 객체를 생성할 때 사용     => 구체화 객체화     - 실제로 동작하는 것
- 데이터 타입                                  - 메모리에 생성된 데이터
<현실세계>

  철수            영희          => 객체
이름: 철수      이름: 영희
나이: 40        나이: 38        => 상태, 속성 - 변수, 필드
배고픔: X       배고픔: X

먹는다          먹는다          => 기능, 행위 - 메서드, 함수
일한다          일한다

<프로그래밍>
-추상화-
Person                         => 클래스
String name:
int age:                       => 멤버변수
boolean isHungry:

void eat()                     => 멤버메서드
void work()

-구체화-                       => 객체(메모리 어딘가에 존재해야 사용할  있다)
Person p = new Person();
p.name = "철수";
p.age = 20;
p.isHungry = false;

p.eat();
p.work();

추상화로 클래스 만들고 구체화로 객체 사용하기
Person 클래스 작성하기

Public class Person{
  //멤버 변수 - 속성
  String name;
  int age;
  boolean isHungry;

  //멤버 메서드 - 동작
  void eat(){
    isHungry = false;
    System.out.println("먹기");
  }
  void work(){
    isHungry = false;
    System.out.println("일하기");
  }

  public static void main(String[] args){
    Person p1 = new Person();
    p1.name = "홍길동";
    p1.age = 10;
    p1.eat();

    Person p2 = new Person();
    p2.name = "장길산"
    p2.age = 3;
    p2.work();
  }
}
p1  p2는 같은 타입일 , 데이터가 공유되거나 하지는 않는다.

객체 생성과 메모리


1. 변수

변수의 종류

  • 타입에 따른 분류
    변수 종류 특징 비고
    Primitive Type 기본 8가지 type의 변수 int i, char c, float f…
    Reference Type 나머지 모든 것(객체 참조) String s, int[] a, Person p…
  • 선언 위치에 따른 분류
    종류 변수 종류 선언 위치
    멤버 변수 클래스 멤버변수 클래스 영역 (static keyword)
      인스턴스 멤버 변수 클래스 영역
    지역 변수 지역 변수 함수 내부
      파라미터 변수 함수 선언부
public class VariableType {
  int instanceVariable; //인스턴스 멤버 변수
  static int classVariable; //클래스 멤버 변수
  public static void main(String[] args){//파라미터 변수
    int localVariable = 10; //로컬변수
    for(int i=0; i<100; i++) {//로컬변수
     System.out.println(i);
    }
  }
}

인스턴스 멤버 변수의 특징

  • 선언 위치 : 클래스{}영역에 선언
  • 변수의 생성 : 객체가 만들어질 때 객체 별로 생성됨
    • 생성 메모리 영역 : heap
  • 변수의 초기화 : 타입 별로 default 초기화
  • 변수에 접근 : 객체 생성 후(메모리에 올린 후) 객체 이름(소속)으로 접근
    • 객체를 만들 때 마다 객체 별로 생성 -> 객체마다 고유한 상태(변수 값) 유지
Person p1 = new Person();
p1.name = "김경호";
Person p2 = new Person();
p2.name = "호경김";
//////////////////////////////////// 여기까지 작성, 18일 2번째 5:22

태그:

카테고리:

업데이트:

댓글남기기