1) 코드의 재사용성이 높다.
- 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
2) 코드의 관리가 용이하다.
- 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
3) 신뢰성이 높은 프로그래밍을 가능하게 한다.
- 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.
은유적으로 쉽게 설명하자면 클래스는 '설계도'이고 객체는 '제품'이다.
클래스
정의 : 객체를 정의해 놓은 것
용도 : 객체를 생성하는데 사용
변수 < 배열 < 구조체 < 클래스
변수 : 하나의 데이터를 저장할 수 있는 공간
배열 : 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간
구조체 : 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간
클래스 : 데이터와 함수의 결합(구조체 + 함수)
객체 생성 하는 법
Tv t = new Tv();
Tv[] arr = new Tv[3]; //객체 배열 생성
클래스 ---(인스턴스화)---> 인스턴스(객체)
class Tv {
String color;
boolean power;
int channel;
// 속성(=변수)
void power() {power = !power;}
void channerlUp() {channel++;}
void channelDown() {channel--;}
// 기능(=메소드)
}
clss Variables {
int iv; // 인스턴스 변수
static int cv; // 클래스 변수(static 변수, 공유변수)
void method() {
int lv = 0; // 지역변수
}
}
class Card {
String kind; // 무늬
int number; // 숫자
static int width = 100; // 폭
static int height = 250; // 높이
}
- 한 카드의 width, heigt을 변경해도 모든 카드의 값이 변경된다.
public class Sample {
int x
- 멤버변수, 인스턴스 변수, 프로퍼티, 필드
- 클래스의 구성요소 중 한다.
- 생성된 객체에 포함되어 있다.
- 객체가 유지되는 동안(그 객체를 참조하고 있는 동안) 변수 값도 유지된다.
- 객체가 생성될 때 멤버변수는 해당 타입의 기본값으로 초기화된다.
public static void main(String[] args) {
int y = 0;
- 지역변수, 로컬변수
- 메소드 내부에서 선언된 변수다.
- 해당 메소드가 실행되는 동안 사용할 수 있다.
- 변수가 선언된 블록이 종료되면 변수가 사라진다.
- 변수를 생성할 때 자동으로 초기화되지 않는다.
if (y == 0) {
int z = 100;
- 지역변수, 로컬변수
- if블록이 종료되면 이 변수도 사라진다.
- if블록 밖에서 사용할 수 없다.
- 변수를 생성하면 자동으로 초기화되지 않는다.
}
}
}
Score[] scores = new Score[3];
- new Score[3]는 Score객체를 3개 저장할 수 있는 배열객체를 생성한 것이다.
scores —→ [null, null, null]
Score score = new Score();
- new Score()는 Score 설계도로 Score객체를 생성하는 것이다.
- score 참조변수는 Score객체를 참조하고 있다.
score –→ Score객체
Score score1 = new Score();
Score score2 = null;
System.out.println(score1.studentNo);
System.out.println(score2.studentNo);
// 값이 null이기 때문에 오류
Score[] scores = new Score[3];
Score score = scores[0];
// score[0]번째에는 null이 저장되어 있다. score도 null이 저장되므로 오류
System.out.println(score.studentName);