클래스 ( Class )
- JAVA 에서 객체(Object)를 생성하기 위한 일종의 "설계도" 라고 생각하면 된다.
>> 쉽게 생각하면, 볼펜을 생산할 때 볼펜 케이스가 있고, 내부에 잉크가 있다.
>> 이때, 잉크를 '객체'로, 볼펜케이스를 '클래스'라고 생각하면 더 쉽다.
- 객체가 가지는 속성(필드)와 동작(메서드)으로 이루어져 있다. ( 생략 혹은 하나 이상에서 동작 가능 )
- Java를 실행 시 클래스는 JVM 메모리의 클래스 영역(Class Area)에 로드된다.
public class Object001_1 {
int result;
int add(int a) {
result += a;
return a;
}
}
객체 ( Object )
- 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서
- 본인의 속성을 포함하고, 다른 것과 식별 가능한 것을 말한다.
public class Object001_2 {
public static void main(String[] args) {
System.out.println("1번 계산기");
Object001_1 ca1 = new Object001_1();
System.out.println(ca1.add(10));
}
}
인스턴스 ( Instance )
- 클래스가 볼펜 케이스라면, 그 틀을 통해 생성된 객체(잉크) 하나하나를 해당 클래스의 인스턴스라 한다.
- 클래스를 사용하여 힙 영역(Heap Area)에 새로운 인스턴스(객체)를 생성 가능하다.
- 즉, 인스터스란 현실의 객체를 소프트웨어 내에서 구현한 실체라고 생각하면 된다.
멤버변수 ( Member Variable )
- 클래스 안에서 선언 된 변수
- 객체를 생성할 때 각 데이터 타입의 기본 값으로 자동 초기화
- 기본 값 : 정수형 0, 실수형 0.0, 논리형 false, 객체 null
지역변수 ( Local Variable )
- 메서드 안에서 선언된 변수
- 사용하기 전에 반드시 초기화 해야 함
< 클래스 생성 >
public class Variable {
// 멤버변수는 객체로 생성될 때 자동 초기화
// 강제 지정 가능
int a;
// 매개변수
void printNum(int c) {
// 지역변수
int b = 100;
System.out.println("멤버 변수 : " + a);
System.out.println("지역 변수 : " + b);
System.out.println("매개 변수 : " + c);
}
}
< 객체 생성 및 출력 >
public class Variable__print {
public static void main(String[] args) {
Variable v = new Variable();
v.a = 100;
v.printNum(100);
}
}
생성자 ( Constructor )
생성자는 객체가 생성될 때 객체의 상태(멤버변수)를 초기화하는데 사용한다.
객체가 생성될 때 new 키워드 다음에 오는 것을 생성자라고 한다. ( 객체 생성과는 다르다 )
메서드와 모양이 비슷하게 생겼지만, 반환 타입을 적지 않고 클래스 이름과 대/소문자까지 똑같이 만들어야 한다.
생성자는 반드시 클래스 안에 하나 이상 선언해야 하며, 만일 생성자를 만들지 않을 경우
자바 가상 머신(JVM: Java Virtual Machine)이 대신해서 기본 생성자를 자동으로 하나 만들어 준다.
기본 생성자는 매개 변수를 가지지 않는 기본 형태의 생성자이다.
- 생성자 선언 규칙
- 생성자의 이름은 클래스 이름과 대/소문자까지 정확히 같아야 합니다.
☞ 만약 클래스 이름과 다른 이름으로 만들면 메서드로 간주합니다.
- 생성자는 메서드와는 달리 반환 유형을 적지 않습니다.
- 생성자는 다른 유형으로 여러 개 생성 가능합니다 (생성자 오버로딩, 매개변수 종류나 개수가 달라야한다.)
< 클래스 생성 >
public class phone {
String model;
int price;
String color;
// 생성자
// 중복으로 여러 개 생성 가능
// 규칙 - 매개변수의 종류 or 매개변수 개수가 달라야함.
phone(){
System.out.println("생성자 호출");
// 멤버변수를 초기화 하는 역할
model = "삼성";
price = 1000000;
color = "black";
}
phone(String pColor){
model = "애플";
price = 1200000;
color = pColor;
}
void info() {
System.out.println("===휴대폰 정보===");
System.out.println();
System.out.println("모델 : " + model);
System.out.println("가격 : " + price);
System.out.println("색상 : " + color);
}
}
< 생성자 호출 및 출력 >
public class phone_print {
public static void main(String[] args) {
phone ph = new phone();
new phone();
ph.info();
phone black = new phone("black");
black.info();
}
}
예제 - 입출금 계산 프로그램
< class 생성 >
public class account {
String name;
String pw;
int bal;
// 예금자 정보 입력
account(String sName, String sPw, int sBal){
name = sName; // 성명
pw = sPw; // 비밀번호
bal = sBal; // 잔액
}
// 입금
void deposit(int a) {
bal += a;
System.out.println(a + " 원이 입금되었습니다.");
System.out.println("잔액은 " + bal + " 원입니다.");
}
// 출금
void withDraw(int b) {
bal -= b;
System.out.println(b + " 원이 출금되었습니다.");
System.out.println("잔액은 " + bal + " 원입니다.");
}
// 잔액확인
int getbalance() {
System.out.println();
return bal;
}
}
< 생성자 및 객체 생성, 출력 >
public class account_print {
public static void main(String[] args) {
account ac = new account("홍길동", "1234", 3600 );
ac.deposit(800);
ac.withDraw(1900);
int bal = ac.getbalance();
System.out.println(ac.name + "님의 현재 잔액은 " + bal + " 원입니다.");
}
}
728x90
'Programming > Java' 카테고리의 다른 글
[JAVA] 접근 제한자 (0) | 2023.11.13 |
---|---|
[JAVA] 패키지와 상속 (0) | 2023.11.10 |
[JAVA] 스택(Stack)과 큐(Queue) (0) | 2023.11.07 |
[JAVA] 매서드 (0) | 2023.11.06 |
[JAVA] 2차원 배열 (0) | 2023.11.03 |