지난번 Scanner클래스와 유저입력에 대해서 알아보았습니다.
이번글에서는 자바(Java)의 클래스(class)에 대해서 알아보겠습니다.
또한 클래스와 함께 자주 나오는 개념인 오브젝트(object)와
인스턴스(instance)에 대해서도 다뤄보겠습니다.
클래스에 대해서 블로그에서 언급한 적이 있으나
자바 프로그램 구조에 대해서 설명하기 위해 간략하게
설명하다 보니 부족한 부분들이 있었습니다.
다음 부분으로 넘어가기 전에 다시 한번 살펴보겠습니다.
https://jaythecode.tistory.com/1
자바(JAVA) 기초 같이 알아보자(1) - 자바 프로그램 구조
자바(JAVA)는 한국뿐만아니라 세계적으로도 많이 사용되고점유율 또한 높은 프로그램 언어입니다. 앞으로 자바의 기초를 정리해보자합니다.해외에서 공부하고 있는 학생인만큼 평소에 자주 사
jaythecode.tistory.com
클래스(class)
우선 클래스(class)는 객체 지향 프로그램(object oriented program)의
가장 기본적인 개념들 중에 하나입니다.
클래스는 프로그램에서 사용될 객체(Object)의 틀을 정의합니다.
클래스는 변수(attribute), 생성자(constructor), 메소드(method)으로
구성됩니다.
각각에 대해서 조금 더 자세히 살펴보겠습니다.
- 변수(attribute)
클래스 내에서 사용되는 변수를 의미합니다.
클래스의 속성을 나타냅니다. - 생성자(constructor)
생성자는 클래스의 객체가 생성될 때 호출하는 특별한 메소드입니다.
객체가 생성될 때 호출되어 객체의 초기화를 수행합니다.
* 클래스의 필수적인 구성요소입니다. - 메소드(method)
클래스 내에서 사용되는 함수입니다.
클래스의 동작을 나타냅니다.
class VideoGame{
// attribute 변수
String name;
Double price;
// class constructor 생성자
VideoGame(String name, double price){
this.name = name;
this.price = price;
}
// method 메소드
void startGame(){
System.out.println("The game" + this.name + " has started.");
}
void stopGame(){
System.out.println("The game" + this.name + " has stopped.");
}
void playGame(){
System.out.println("Playing the game " + this.name + ".");
}
void applyDiscount(double discount){
this.price -= discount;
}
public String toString(){
return "Name: "+this.name+", price: $"+this.price;
}
}
위 예시를 살펴보면 클래스의 기본 구성을 쉽게 파악할 수 있습니다.
만들고자 하는 프로그램에 따라 구성과 모양이 많이 달라질 수 있기
때문에 예시를 통해 구조 정도만 간단히 살펴보고 넘어가겠습니다.
toString 메소드
toString() 메소드는 자주 사용되기도 하고 유용한 메소드라
한번 살펴보겠습니다.
Java에 기본적으로 탑재되어 있는 최상위 클래스 Object클래스의
메소드입니다.
toString()메소드를 재정의해서 사용하면 유의미한 정보값을 return 해주어
디버깅에 상당히 편리합니다.
또한 toString()메소드는 자동으로 호출됩니다.
그래서 toString()메소드를 정의하게 되면
class Coffee{
String name;
Coffee(String name){
this.name = name;
}
public void changeName(String newName){
this.name = newName;
}
@Override
public String toString(){
return "coffee: " + this.name;
}
}
public class Cafe{
public static void main(String[] args){
Coffee c1 = new Coffee("Americano");
Coffee c2 = new Coffee("LongBlack");
System.out.println(c1); // Americano
c1.changeName("FlatWhite");
System.out.println(c1); // FlatWhite
}
}
위에서 보는 것과 같이 changeName메소드 처럼 따로 호출해 줄
필요가 없이 자동으로 toString 메소드가 호출되어 유의미한 값을
리턴해줍니다.
오브젝트/객체 & 인스턴스 (object & instance)
다음으로 객체(object)와 인스턴스(instance)에 대해서 알아보겠습니다.
처음에 자바를 접했을 때 도대체 오브젝트와 인스턴스가
차이가 있는 개념인지 있으면 어떤 것이 차이점인지
알기 어려워서 한번 짚고 넘어가 보려고 합니다.
먼저 오브젝트(Object), 즉 객체는 자기의 속성을 가지는
모든 물리적, 추상적인 대상을 말합니다.
자 여기서 기억해야 할 것은 클래스가 객체(object)를 만들어 내기
위한 틀로 사용된다는 것입니다.
객체는 모든 인스턴스를 대표하는 포괄적인 의미를 가집니다.
즉, 객체가 인스턴스보다 조금 더 상위의 개념입니다.
인스턴스는 틀을 바탕으로 소프트웨어에 구현된 구체적인 실체를
의미합니다.
위의 예시에서 보면 c1과 c2가 이에 해당합니다.
그래서 인스턴스를 만드는 과정을 객체의 인스턴스화라고 부릅니다.
지금까지의 설명이 이해가 어렵고 기억하기 힘들다면
"객체가 인스턴스보다 조금 더 상위개념이다",
"인스턴스는 객체에 포함되어 있다" 라는 것만
지금 단계에서는 알아두고 넘어가면 좋을 것 같습니다.
지금까지 앞으로 알아볼 개념들에 필요한 자바의 클래스(Class)에 대해서
알아보았습니다.
객체지향 프로그램의 가장 기본적인 구조인만큼 개념을 잘 이해하고
넘어가는 게 중요합니다.
다음 글에서는 접근제한자(Access modifier)에 대해서 알아보겠습니다.
'자바(JAVA) 기초 함께 알아보자' 카테고리의 다른 글
자바(JAVA) 기초 함께 알아보자(15) - 캡슐화(Encapsulation) (4) | 2024.10.05 |
---|---|
자바(JAVA) 기초 함께 알아보자(14) - 접근제한자(Access modifier) public/private (0) | 2024.10.04 |
자바(JAVA) 기초 함께 알아보자(12) - Scanner클래스 와 입력 (0) | 2024.09.28 |
자바(JAVA) 기초 함께 알아보자(11) - 반복문의 continue/break (2) | 2024.09.27 |
자바(JAVA) 기초 함께 알아보자(10) - for-each반복문(loop) (2) | 2024.09.26 |