객체지향언어의 특징
1. 코드의 재사용성이 높다.
새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
2. 코드의 관리가 용이하다
코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
3. 신뢰성이 높은 프로그래밍을 가능하게 한다.
제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.
클래스와 객체
클래스 :
객체를 정의해놓은 것, 객체의 설계도 또는 틀
객체 :
클래스에 정의된 내용대로 메모리에 생성된 것
Ex :
TV설계도(클래스) - TV(객체)
클래스를 정의하고 클래스를 통해 객체를 생성하는 이유는 객체를 생성할 때 간편하게 생성하기 위해서
객체와 인스턴스
인스턴스화 :
클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화
인스턴스 :
어떤 클래스로부터 만들어진 객체
클래스 ---(인스턴스화)---> 인스턴스(객체)
객체의 구성요소
- 속성, 기능
객체 :
다수의 속성과 다수의 기능을 갖음
속성 | 멤버변수, 특성, 필드, 상태 |
기능 | 메서드, 함수, 행위 |
* 일반적으로 멤버변수 먼저 선언하고 메서드 선언
인스턴스의 생성과 사용
클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수를 선언
변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장
Tv t; // Tv클래스 타입의 참조변수 t를 선언
t = new Tv(); // Tv인스턴스를 생성한 후, 생성된 Tv인스턴스의 주소를 t에 저장
※ 인스턴스는 참조변수를 통해서만 다룰 수 있으며,
참조변수의 타입은 인스턴스의 타입과 일치해야 한다.
Tv t1 = new Tv(); // 주소값 0x100
Tv t2 = new Tv(); // 주소값 0x200
-> 같은 클래스의 인스턴스라고 해도 선언을 달리하면 주소값은 다르다.
t2 = t1 // t1이 저장하고 있는 주소를 t2에 저장한다. (t2가 참조하고 있던 인스턴스는 더 이상 사용 불가)
★ 참조변수에는 하나의 값(주소)만이 저장될 수 있다.
( 하나의 참조변수가 여러 개의 인스턴스를 가리키는 것은 불가능 )
객체 배열
객체 배열은 참조변수들을 하나로 묶은 참조 변수 배열이다.
Tv tv1,tv2,tv3; -> Tv[] tvArr = new Tv[3]; // 참조변수 배열(객체배열)을 생성
// 객체를 생성해서 배열의 각 요소에 저장
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();
객체 배열을 생성하는 것은, 그저 객체를 다루기 위한 참조변수들이 만들어진 것일 뿐, 아직 객체가 저장되지 않음.
* 객체 배열 예제
package song_pack;
import java.util.*;
public class song_class {
public static void main(String[] args) {
Tv[] tvArr = new Tv[3];
for(int i=0; i<tvArr.length; i++) {
tvArr[i] = new Tv();
tvArr[i].channel = i+10;
}
for(int i=0; i<tvArr.length;i++) {
tvArr[i].channelUp();
System.out.printf("%d %d%n", i, tvArr[i].channel);
}
}
}
class Tv {
String color;
boolean power;
int channel;
void power() { power = !power; }
void channelUp() { ++channel; }
void channelDown() { -- channel; }
}
'Language > java' 카테고리의 다른 글
Java_Study 객체지향 프로그래밍 (상속) (0) | 2022.07.03 |
---|---|
Java_Study 객체지향 프로그래밍 (변수의 초기화) (0) | 2022.07.01 |
Java_Study 객체지향 프로그래밍 (생성자) (0) | 2022.07.01 |
Java_Study 객체지향 프로그래밍 (오버로딩) (0) | 2022.07.01 |
Java_Study 객체지향 프로그래밍 (변수와 메서드) (0) | 2022.06.29 |
댓글