Java
[Java] 클래스 class
junga
2022. 9. 6. 18:25
클래스에 대해 들어가기 전에 객체지향에 대한 이해를 먼저 해야한다!
객체 지향 프로그래밍(OOP, Object-Oriented Programming)
- 모든 데이터를 객체로 취급하며, 이러한 객체가 바로 프로그래밍의 중심이 된다.
- 이러한 객체의 상태와 행동을 구체화하는 형태의 프로그래밍이 바로 객체 지향 프로그램이다.
- 이때 객체를 만들어 내기 위한 설계도와 같은 개념을 클래스(class)라고 한다.
클래스(class)
- 클래스를 가지고 여러 객체를 생성하여 사용하게 된다.
- 객체의 상태를 나타내는 변수(또는 필드)와 객체의 기능을 나타내는 메소드로 구성된다.
인스턴스(instance)
- 클래스에서 객체를 생성하는 것을 인스턴스화라고 한다.
- 그리고 그 클래스에서 생성된 객체는 인스턴스라고 부른다.
- 즉, 메모리에 할당된 객체를 의미한다.
그럼 객체와 인스턴스 차이가 뭐야?
- 객체는 생성된 모든 인스턴스를 대표하는 포괄적인 의미로 보면 되겠다.
메서드(method)
- 데이터를 다루는 기능
Dog 클래스를 만들어보자
// 클래스명: Dog
// 특성: 이름, 나이, 무게
// 기능: 정보 출력
class Dog {
// 필드
String name;
int age;
Double weight;
// 메소드
public void printInfo() {
System.out.println("name : " + name);
System.out.println("age : " + age);
System.out.println("weight : " + weight);
}
}
public class Main {
public static void main(String args[]) {
// 인스턴스 생성
// 클래스이름 객체참조변수이름 = new 클래스이름();
Dog dog1 = new Dog();
dog1.name = "도도";
dog1.age = 5;
dog1.weight = 3.5;
// 메소드 호출
dog1.printInfo();
// name : 도도
// age : 5
// weight : 3.5
}
}
dog1.name 등 인스턴스 변수를 하나 하나 초기화하기 번거롭다..
생성자 메소드를 통해 인스턴스 변수를 간단하게 초기화해보자!
생성자(Constructor)
- 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있다.
- 생성자의 이름은 해당 클래스의 이름과 같아야 한다.
- 생성자는 반환값이 없지만, 반환 타입을 void로 선언하지 않는다.
- 자바의 모든 클래스에는 하나 이상의 생성자가 정의되어 있어야 한다.
- 생성자 정의가 따로 없어도 컴파일 시 자동으로 기본 생성자를 추가한다.
ex) 위에 Dog 클래스
class Dog {
String name;
int age;
Double weight;
// 생성자 메소드 정의
// this는 무엇? -> 인스턴스가 바로 자기 자신을 참조하는데 사용하는 변수이다.
Dog(String name, int age, Double weight){
this.name = name;
this.age = age;
this.weight = weight;
}
public void printInfo() {
System.out.println("name = " + name);
System.out.println("age = " + age);
System.out.println("weight = " + weight);
}
}
public class Main {
public static void main(String args[]) {
// 객체 생성과 동시에 인스턴스 변수 초기화
Dog dog1 = new Dog("도도", 5, 3.5);
dog1.printInfo();
}
}