클래스란?
객체를 만들때 필요한 청사진(설계도)
그럼 객체란?
우리 주변에서 볼 수 있는 사물들이 객체
이것을 코드로 한번 살펴보자
Person.class - 사람이라는 객체를 만들어서 살펴보자
public class Person() {
...
}
Person 이라는 클래스를 만들었다.
public class Main {
public static void main(String[] args) {
Person personA = new Person(); // ✅ 첫번째 객체 생성
Person personB = new Person(); // ✅ 두번째 객체 생성
}
}
객체를 만들때 new 라는 키워드를 사용한다.
객체를 만드는 과정을 인스턴스화 라고 표현한다.
인스턴스화가 되면 Java 메모리 상에 객체가 만들어진다.
이제 클래스의 구조를 살펴보자
클래스의 구조는 1. 속성 , 2. 생성자 , 3. 기능 부분으로 나누어진다. (속성기로 외우면 편하다)
class 클래스 {
// 1. 속성
// 2. 생성자
// 3. 기능
}
class 클래스 {
// 1. 속성
String name;
int age;
String address;
// 2. 생성자
// 3. 기능
}
속성 : 변수 선언으로 표현할 수 있다.
객체는 속성(특징)을 작성하는것이다.
속성에 접근하려면 어떻게 해야할까???
public class Main {
public static void main(String[] args) {
// 1. 객체 생성
Person personA = new Person();
Person personB = new Person();
// 2. ✅ 객체를 통해 접근 personA 의 name
System.out.println(personA.name);
// 3. ✅ 객체를 통해 접근 personB 의 name
System.out.println(personB.name);
}
}
객체를 통해서 속성에 접근할 때 객채가담긴 변수, 속성으로 접근한다.
이제 생성자를 만들어 보자!!!
생성자 : 객체를 만들때 생성 (객체를 어떻게 만들지 정의해 놓은것 / 생성자가 없으면 클래스를 객체화 시킬 수 없음)
< 기본생성자 : 클래스를 생성하면 기본생성자는 자동으로 추가 Person() {} >
ex ) 생성자 만들어 보기 :
public class Person {
String name;
int age;
String address;
Person() {} // ❌ 기본생성자 제거됨
Person(String name, int age) { // ✅ 새로운 생성자(조립설명서)
this.name = name; // (this 키워드는 객체 자신을 가리키는 키워드이다)
this.age = age;
}
}
: 생성자를 새롭게 정의를 하는 순간에 기본생성자는 사라진다!!
그 다음 main 문으로 돌아와서 보면
public class Main {
public static void main(String[] args) {
Person personA = new Person(); // ❌ 에러발생 // 생성자와 이름 동일해야함
Person personB = new Person(); // ❌ 에러발생
}
}
기존에 만들었던 객체들에 에러가 뜨게 되는데 그때는
public class Main {
public static void main(String[] args) {
Person personA = new Person("gygim", 10); // ✅ 조립설명서 준수
Person personB = new Person("Steve", 5); // ✅ 조립설명서 준수
}
}
이렇게 변경하면 된다.
* 생성자의 특징 :
1. 클래스와 이름이 같다. 2. 반환티입이 존재하지 않는다. 3. 여러개가 존재할수있다.
기능 : 메서드 부분
객체의 기능을 나열한 곳이고, 기능은 메서드로 표현합니다.
class Person {
...
// ✅ 사람의 소개 기능
void introduce() {
System.out.println("안녕하세요.");
System.out.println("나의 이름은 " + this.name + "입니다.");
System.out.println("나이는 " + this.age + "입니다.");
}
// ✅ 사람의 더하기 기능
int sum(int a, int b) {
int result = a + b;
return result;
}
}
메인클레스에서 이용하는 법
public class Main {
public static void main(String[] args) {
Person personA = new Person("John", 40);
personA.introduce(); // ✅ personA 객체 introduce() 호출
Person personB = new Person("Steve", 5);
}
}
// 게터 - 클래스의 속성을 가져올때 사용하는 기능을 의미
String getName() {
return this.name;
}
int getAge() {
return this.age;
}
String getAddress() {
return this.address;
}
// Main 클래스에서 호출
String name = person.getName();
int age = person.getAge();
String address = person.getAddress();
//세터 - 객체의 속성을 외부에서 설정할 수 있게 해주는 기능
//Person 클래스에서 세터를 만들고
void getName(String name) {
this.name = name;
}
void getAge(int age) {
this.age = age;
}
void setAddress(String address) {
this.address = address;
}
// Main 클래스
public class Main {
public static void main(String[] args) {
Person personA = new Person("gygim", 20);
Person personB = new Person("Steve", 15);
personA.setAddress("서울"); // ✅ personA 의 주소 설정
personB.setAddress("미국"); // ✅ personA 의 주소 설정
}
}
대충 요약( 예제를 통해서 )
public class Car {
String carName;
String carColor;
int speed = 100;
public Car(String carName, String carColor) {
this.carName = carName;
this.carColor = carColor;
}
public void drive() {
System.out.println(carName + "의 차량은" + carColor + "색깔입니다.");
}
public void accelerate() {
speed += 10;
System.out.println("현재 속도는 : " + speed);
}
}
public class Main {
public static void main(String[] args) {
Car carName1 = new Car("bmw", "Red");
carName1.drive();
carName1.accelerate();
carName1.accelerate();
carName1.accelerate();
carName1.accelerate();
}
}
'끄적모음' 카테고리의 다른 글
레퍼 클래스 (0) | 2025.04.15 |
---|---|
JVM 메모리 (0) | 2025.04.15 |
자바 공부 5 (1) | 2025.04.11 |
요약 정리 - 자바 5 (0) | 2025.04.10 |
요약 정리 - 자바 4 (0) | 2025.04.10 |