[JAVA]클래스(Class)
클래스란?
- 객체를 생성하기 위한 설명서이다.
- 어떤 물건을 만들기 위한 매뉴얼이라고도 생각할 수 있다.
- 클래스를 기반으로 객체를 생성해야 한다.
- 하나의 설명서로 여러 개의 여러 개의 물건을 만들 수 있듯이 자바에서는 하나의 클래스로 여러 개의 객체를 생성할 수 있다.
객체지향 프로그래밍
- 말 그대로 객체를 지향하는 프로그래밍 방법이다.
- 객체란 우리 실생활에 존재하는 모든 것이라고 말할 수 있다.
- 객체는 일반적으로 상태를 표현할 수 있고, 우리가 행동으로 실행할 수 있는 모든 것들을 의미한다.
- 이런 객체를 중심으로 프로그램 구조를 설계하고 프로그래밍하는 것을 객체지향 프로그래밍이라고 한다.
클래스의 종류
쉽게 설명하면 객체 생성용 클래스는 붕어빵 기계의 틀이라고 생각하고
main클래스는 붕어빵을 굽는 과정이라고 많은 사람들이 비유를 한다.
- 실행용 클래스(main)
- 프로그래밍 전체에서 단 하나의 클래스로, 프로그램의 실행을 맡고 있다.
- main메서드를 갖고 있으며, 다른 클래스에서 사용되지 않는다.
- 객체 생성용 클래스
- 다른 클래스에서 사용할 목적으로 선언되는 클래스
- 하나의 클래스에서 두 가지 용도의 역할을 모두 수행할 수 있다.
- 유지 보수와 객체 지향 프로그래밍의 특징인 모듈화를 고려해서 별도로 분리하여 작성하는 것이 좋다.
객체 생성용 클래스
public static void main(String[] args) { } 우리는 보통 이 main메서드 안에다가 코드를 작성하며
공부를 해왔을 것이다. 그러면서 수많은 main메서드를 만들었지만 이제는 그러지 않는 습관을 만들어보자
객체 생성용 클래스는 위처럼 main메서드를 만들지 않는다.
public class Fish{
//클래스명 명명 규칙
//영어 대소문자를 사용할 수 있으며 보통 첫 글자를 대문자로 한다.
//숫자를 사용할 수 있으나 첫 글자로는 사용할 수 없다.
//특수문자는 $,_ 만 가능하다.
//자바의 예약어(id,switch,for,while,...)는 사용할 수 없다.
}
위에 쓰여있는 것과 같이 이름을 지어주면 된다 변수의 명명 규칙이랑 비슷하다.
실행용 클래스
실행용 클래스는 우리가 평소에 사용하던 것이 실행용 클래스이다.
public static void main(String[] args) { }
이 메서드가 실행용 메서드를 의미한다.
그럼 아까 만든 Fish클래스를 생성해 보자
public class FishMain {
public static void main(String[] args) {
//객체변수 선언하기
//클래스명 객체명;
Fish f;
//객체변수에 대입하기
//선언한 객체변수에 객체를 생성하여 대입하기
//객체변수명 = new 클래스명();
f = new Fish();
//객체변수 초기화
//클래스명 객체변수명 = new 클래스명();
Fish f2 = new Fish();
}
}
위와 같은 코드를 실행하면 Fish의 객체가 2개(f, f2)가 생성이 된 것이다.
클래스의 구성요소
- 필드 (위에서 붕어빵을 예시로 들었을 때 반죽과 속 재료를 필드로 선언한다고 생각하면 된다.)
- 객체가 가져야 할 데이터의 상태를 저장하는 변수 필드 또는 멤버라고 부른다
- 필드의 값을 초기화하지 않으면 객체 생성 시 자동으로 기본값으로 초기화된다.
- 메서드(함수)
필드
필드의 선언
public class Fish {
String shape; //붕어빵의 모양
String inner; //붕어빵의 속재료
}
이런 식으로 필드를 선언할 수 있다.
실행용 클래스
public class FishMain {
public static void main(String[] args) {
Fish f1 = new Fish();
f1.shape = "잉어";
f1.inner = "팥";
Fish f2 = new Fish();
f2.shape = "붕어";
f2.inner = "슈크림";
System.out.println("f1객체의 모양은 "+f1.shape+"이고 속재료는 "+f1.inner+"이다.");
System.out.println("f1객체의 모양은 "+f2.shape+"이고 속재료는 "+f2.inner+"이다.");
}
}
예시로 String만 필드로 선언을 했지만 다른 자료형들도 가능하다.
메서드는 다음 글에서 확인해 보자.
2023.12.14 - [Java] - [JAVA] 메서드(method)
[JAVA] 메서드(method)
변수의 생명주기 메서드를 자세히 보기 전에 변수의 생명주기에 대한 이해가 필요하다. 변수 종류 생명주기 지역변수 지역변수를 선안한 중괄호 내에서만 유효하다. 매개변수(파라미터) 메서드
treebomb-code.tistory.com