728x90
반응형

클래스(class)와 객체(object)


클래스 :: 객체를 정의해 놓은 것으로 객체를 생성하는데 사용된다.

객체 :: 실제로 존재하는 사물 또는 개념으로 객체의 속성과 기능에 따라 다르다.

-> 클래스를 정의하고 클래스를 통해 객체를 생성하는 이유는 설계도를 통해서 제품을 만드는 이유와 같다.

설계도만 잘 만들어 놓으면 제품을 만들때마다 매번 고민할 필요없이 설계도에서 정해진 규칙대로만 만들면 된다.

마찬가지로 클래스 하나만 잘 만들어 놓으면 많은 수의 객체를 만드는 것도 고민없이 간단히 처리할 수 있다.

-> 객체는 서로 독립적이다. 같은 클래스로부터 생성된 객체일지라도 서로 독립적이어서 한 객체의 변화가 다른 객체에 영향을 주지 않는

         클래스             객체

       제품 설계도        제품

        TV 설계도          TV

      붕어빵 기계       붕어빵


클래스의 정의

클래스 :: 데이터와 함수의 결합

데이터 저장형태의 발전과정 :: 변수는 하나의 값만 저장 -> 같은 타입의 여러데이터를 저장할 수 있는 배열 도입 -> 타입은 다르지만 서로 관련된 데이터를 하나로 묶어서 저장할 수 있는 구조체 도입 -> 서로 관련된 데이터와 함수를 결합한 클래스 도입

변수 : 하나의 데이터를 저장할 수 있는 공간

배열 : 같은 타입의 여러 데이터를 저장할 수 있는 공간

구조체 : 타입에 관계없이 서로 관련된 데이터들을 저장할 수 있는 공간

클래스 : 데이터와 함수의 결합(구조체+합수)



클래스(class) :: 객체를 만드는 설계도. 클래스로부터 만들어지는 각각의 객체를 특별히 그 클래스의 인스턴스(instance)라고도 한다.

객체(object) :: 상태와 동작을 가진다. 객체의 상태는 객체의 특징값(속성) -> 멤버(인스턴스)변수 이다. 객체의 동작은 객체가 취할 수 있는 동작 -> 메서드 이다.



객체의 구성요소 :: 속성(상태)과 기능(동작)으로 이루어져 있다.

객체는 속성과 기능의 집합이며, 속성과 기능을 객체의 멤버라고 한다.

클래스를 정의할 때 속성(상태)은 변수로, 기능(동작)은 메서드로 정의한다.



객체를 생성하는 방법

Car myCar=mew Car();

※자바에서 객체를 생성하는 방법은 new한가지 뿐이다.




객체의 생성과 사용

 <객체의 생성 방법>

   클래스명 변수명;              //객체를 다루기 위한 참조변수 선언

   변수명=new 클래스명();    //객체생성 후, 생성된 객체의 주소를 참조변수에 저장

 예1) TV t;                         //TV타입의 참조변수 t선언

        t=new TV();               //new연산자 사용하여 TV객체 생성

 예2)TV t= new TV();          //한 줄로 줄여서 표현 가능


 new연산자는 인스턴스를 생성할 클래스를 읽어서 인스턴스 생성에 필요한 메모리를 계산한다음, 메모리의 빈 공간을 찾아 객체를 생성하고 생성된 객체의 메모리 주소를 반환한다.

 - 참조변수는 인스턴스를 다룰 수 있는 유일한 방법이기 때문에 참조변수가 없으면 인스턴스를 사용할 수 없다. 사용할 수 없는 인스턴스는 JVM의 가비지컬렉터에 의해서 적절한 시기에 자동적으로 메모리에서 제거된다. 그래서 사용되지 않는 인스턴스를 제거하는데 신경쓰지 않아도 되기 때문에 메모리관리 부담이 없다는 것이 JAVA의 큰 장점이다.

 - 참조변수 t가 TV인스턴스를 참조하고 있다. (t는 TV의 리모콘에 비유)




TV t1 = new TV();     //TV객체를 참조하는 t1변수 선언

TV t2 = new TV();     //TV객체를 참조하는 t2변수 선언

t2 = t1;                     //참조변수 t1의 값을 t2에 저장(복사)

t1.channel=7;

System.out.println(t1.channel);    //7출력

System.out.println(t2.channel);    //7출력

728x90
반응형

+ Recent posts