공부했던 자료 정리하는 용도입니다.

재배포, 수정하지 마세요.

 

 

 

 

객체지향 언어(Object-oriented Programming)

 객체지향 언어는 프로그램을 객체 단위로 나누어서 객체를 중심으로 프로그램을 구성하는 언어를 의미한다. 객체지향 언어를 사용하면 코드의 재사용성이 높고 코드의 관리가 용이하며 신뢰성이 높은 프로그래밍(제어자와 메서드를 이용한 데이터 보호)을 가능하게 한다는 장점이 있다. 객체는 데이터나 데이터와 관련된 동작을 모두 포함하는 개념이다. 

 

클래스와 객체

클래스

클래스는 객체를 정의해 놓은 것이다. 클래스는 데이터와 함수로 이루어져 있으며 객체는 클래스에 정의된 대로 생성된다. 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate)라고 하며, 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다.

객체

클래스에 정의된 내용대로 메모리에 생성된 것을 의미한다.
객체는 멤버 변수(member variable)와 메서드(method)로 이루어져 있다. 

클래스는 사용자 정의 타입(user-defined type)이라고도 한다. 프로그래밍 언어에서 제공하는 자료형 외에 프로그래머가 서로 관련된 변수들을 묶어서 하나의 타입으로 새로 추가하는 것을 사용자 정의 타입이라고 하는데 자바에서는 클래스가 곧 사용자 정의 타입이라고 할 수 있다.

 

 

  ■ 인스턴스의 생성과 사용

클래스명 변수명;	//클래스의 객체를 참조하기 위한 참조변수 선언
변수명 = new 클래스명();	//클래스의 객체를 생성한 후에 객체의 주소를 참조변수에 저장

//두줄 합쳐서 아래와 같이 사용 가능
클래스명 변수명 = new 클래스명();

Tv t;	// TV클래스 타입의 참조변수 t를 선언
t = new Tv();	//TV인스턴스를 생성한 후, 생성된 Tv인스턴스의 주소를 t에 저장

//두줄 합쳐서 아래와같이 사용가능
Tv t = new Tv();

 new 를 사용하지 않고 변수명만 선언하면 인스턴스가 생성되지 않는다. 꼭  new 를 사용해서 인스턴스를 생성해야 한다.

인스턴스는 참조 변수를 통해서만 다룰 수 있고 참조 변수의 타입은 인스턴스의 타입과 일치해야 한다. 

 

 

Tv t1 = new Tv();
Tv t2 = new Tv();

t2 = t1; //t1이 저장하고 있는 주소값을 t2에 저장한다. t2가 참조하고 있던 인스턴스는 더이상 사용할수 없게 된다.

t1.channel = 7;	//참조변수.멤버변수를 이용하면 인스턴스의 멤버변수 값을 바꿀 수 있다.

위의 코드에서  t2 의 참조 변수에  t1 의 주소 값을 저장해버리면 원래  t2 가 참조하고 있었던 인스턴스를 더 이상 사용할 수 없게된다. 자신을 참조하고 있는 참조변수가 하나도 없는 인스턴스는 더이상 사용될 수 없으므로 GC(Garbage Collector)에 의해서 자동적으로 메모리에서 제거된다.

 

또한 위의 코드에서 알 수 있듯이 참조 변수에는 하나의 주소 값만이 저장될 수 있다. 둘 이상의 참조 변수가 하나의 인스턴스를 참조하는것은 가능하지만 하나의 참조변수가 여러 개의 인스턴스를 가리키는 것은 가능하지 않다.

 

 

  ■ 객체 배열

  객체도 배열로 다루는 것이 가능하다. 객체 배열 안에는 객체가 아닌 객체의 주소가 저장되므로 참조 변수 배열이라고 보면 된다.

 

'Back end > Java' 카테고리의 다른 글

[Java] JVM의 메모리 구조, 메서드(Method)  (0) 2019.06.20
[Java] 변수(Variable)와 메서드(Method)  (0) 2019.06.17
[Java] 배열(Array)  (0) 2019.06.04
[Java] 조건문과 반복문  (0) 2019.05.23
[Java] 연산자(Operator)  (0) 2019.05.21

+ Recent posts