클래스와 인스턴스 그리고 객체

|

객체를 만들기 위해서 우선 클래스를 정의하고, 클래스에 대한 인스턴스를 만들었다.

 

클래스 : 설계도, 정의, 연관되어 있는 변수와 메소드의 집합.

 

클래스 = 필드(데이터) + 메소드(처리동작)

 

인스턴스 : 구체적인 제품, 호출.

객체 : 상태(변수)와 행위(메소드)의 집합

 

 

클래스를 인스턴스화 할 때는 변수에 담아야 한다는 것과 이 때 사용하는 변수의 데이터 타입은 그 클래스가 된다는 점.

 

즉 하나의 클래스를 바탕으로 서로 다른 상태를 가진 인스턴스를 만들면 서로 다른 행동을 하게 된다는 것을 알 수 있다. 하나의 클래스가 여러개의 인스턴스가 될 수 있다는 점이 객체 지향이 제공하는 가장 기본적인 재활용성이라고 할 수 있다.

 

필드와 메소드가 합쳐진 객체를 뜻함.

(ex. String클래스(char[]필드와 string[]메소드가 합쳐짐)

 

아이디로그인시 검색방법 : 대문자로 만들어놓고 비교, 소문자로 만들어놓고 비교, 
각 데이터는 주소값이 존재(생성자)

################## 멤버 ##################

멤버 : 구성원

 

################## 클래스선언 ##################

<예시>

class Person{               객체를 정의/생성하는 툴인 Person 이라는 클래스를 만든다(관례상 클래스의 이름 첫글자는 대문자)

   String name;            문자열 값을 담는 name 이라는 변수를 선언한다

   int age;                   정수 값을 담는 age 라는 변수를 선언한다                              데이터 = 필드

   int weight;               정수 값을 담는 weight 라는 변수를 선언한다

   String eat(){             문자열 값을 리턴값으로 받는 eat라는 메소드를 선언한다

     return "eat";          이 메소드를 호출한 곳에 "eat"를 리턴한다

   }                                                                                                                처리동작 = 메소드

   String sleep(){          문자열 값을 리턴값으로 받는 sleep 라는 메소드를 선언한다

     return "sleep";        이 메소드를 호출한 곳에 "sleep"를 리턴한다

   }

}

 

################## 클래스변수 ##################

클래스 변수의 용도를 정리해보면 아래와 같다.

- 인스턴스에 따라서 변하지 않는 값이 필요한 경우
(이런 경우 final을 이용해서 상수로 선언하는 것이 바람직)

- 인스턴스를 생성할 필요가 없는 값을 클래스에 저장하고 싶은 경우

- 값의 변경 사항을 모든 인스턴스가 공유해야 하는 경우

 

################## 클래스메소드 ##################

클래스변수에 직접 접근가능.

일회용처럼 굳이 인스턴스를 만들 필요없을때 사용.(메소드가 인스턴스 변수를 참조하지 않는다면 클래스 메소드를 사용해서 불필요한 인스턴스의 생성을 막을 수 있다.)

 

  1. 인스턴스 메소드는 클래스 맴버에 접근 할 수 있다.
  2. 클래스 메소드는 인스턴스 맴버에 접근 할 수 없다. 

변수와 필드는 서로 대체가능한 용어임.

 

인스턴스 변수 -> Non-Static Field

클래스 변수 -> Static Field

 

필드(field)라는 것은 클래스 전역에서 접근 할 수 있는 변수

 

################## 객체의 생성과 사용 ##################

<예시>

class PersonExample{                           객체를 정의/생성하는 툴인 PersonExample 이라는 클래스를 만든다

  public static void main(String[] args){   

     Person personObj1;                        personObj1 변수에 클래스의 객체를 담는 personObj1이라는 변수를 선언한다

     personObj1 = new Person();            personObj1 변수에 Person 클래스의 객체를 새로 생성하여 저장한다.

     personObj1.name = "김삿갓";          personObj1 변수 안의 name 변수에 "김삿갓"을 저장한다.

 

Person personObj1;

  personObj1 = new Person(); 

 

-> Person personObj1 = new Person(); 과 동일!

Person 이라는 클래스의 객체를 담는 personObj1 이라는 변수를 선언하고 Person 클래스의 객체를 새로 생성하여 저장한다.

 

* new 연산자 : "새롭게 ~ 을 생성한다"

* 객체가 생성되었으면 그 객체에 이는 데이터와 메소드에 접근하여 이를 참조하거나 값을 저장하여 사용해야함. 이때 '.'을 사용하여 데이터와 메소드의 소속을 밝혀줌.

'Java' 카테고리의 다른 글

반복문  (0) 2019.05.17
배열  (0) 2019.05.17
필드와 메소드  (0) 2019.05.17
별찍기  (0) 2019.05.17
조건문  (0) 2019.05.17
And