클래스(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출력
'Web Programming > java-jsp' 카테고리의 다른 글
메서드, 인수, 매개변수, return문, 중복 메서드 (0) | 2018.08.29 |
---|---|
java 클래스변수, 인스턴스변수, 접근지정자, 지역변수 (0) | 2018.08.29 |
java 절차 지향 프로그래밍, 객체 지향 프로그래밍 (0) | 2018.08.29 |
java 사용자입력받기, 커맨드라인, 입력창 (0) | 2018.08.29 |
이차원배열, 배열의복사 (0) | 2018.08.29 |