클래스란 '객체를 정의해놓은 것'으로, 객체를 생성하는데 사용된다.
객체란 '실제로 존재하는 것'으로, 프로그래밍에서는 '클래스에 정의된 내용대로 메모리에 생성된 것'을 뜻한다.
클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다.
클래스에는 객체의 모든 속성과 기능이 정의되어있다.
인스턴스는 참조변수를 통해서만 다룰 수 있으며,
참조변수의 타입은 인스턴스의 타입과 일치해야 한다.
class Tv {
// Tv의 속성 (멤버 변수)
String color;
boolean power;
int channel;
// Tv의 기능 (메서드)
void power() { // Tv 전원 on, off하는 기능의 메서드
power != power;
}
void channelUp() { // Tv 채널 높이는 기능의 메서드
++channel;
}
void channelDown() { // Tv 채널을 낮추는 기능의 메서드
--channel;
}
class TvTest {
public static void main(String args[]) {
Tv t; // Tv 클래스 타입의 참조변수 t를 선언 (Tv 인스턴스를 참조하기 위함)
t = new Tv(); // Tv 인스턴스 생성, 생성된 객체의 주소값이 참조변수 t에 저장됨
t.channel = 7; // Tv 인스턴스의 멤버변수 channel에 7을 저장
t.channelDown(); // Tv 인스턴스의 메서드 channelDown() 호출
// 참조변수 t가 참조하고 있는 Tv 인스턴스의 멤버변수 channel에 저장되어 있는 값을 출력
System.out.println("현재 채널은 " + t.channel + "입니다.");
객체 배열은 참조변수 배열이다. 객체 배열 안에는 객체의 주소가 저장된다.
// 1. 객체 배열 생성 후 객체 저장
Tv[] tvArr = new Tv[3]; // 객체 배열을 생성
// *주의* 객체를 생성해서 객체 배열의 각 요소에 저장해야 함
for (int i = 0; i < tvArr.length; i++) {
tvArr[i] = new Tv();
// 2. 배열의 초기화
Tv[] tvArr = { new Tv(), new Tv(), new Tv() }
객체지향언어에서는 변수(데이터)와 함수를 하나의 클래스에 정의하여 서로 관계가 깊은 변수와 함수들을 함께 다룰 수 있게 했다. 따라서 변수와 함수가 서로 유기적으로 연결되어 있어 작업이 간단하고 명료해졌다.
클래스가 곧 사용자 정의 타입이다.
사용자 정의 타입 : 프로그래머가 직접 관련된 변수들을 묶어서 하나의 타입으로 새로 추가하는 것