본문 바로가기
Language/Java

[Java] 클래스

by 깐니 2020. 12. 19.

목차

1. 클래스 정의하는 방법
2. 객체 만드는 방법 (new 키워드 이해하기)
3. 메소드 정의하는 방법
4. 생성자 정의하는 방법
5. this 키워드 이해하기


객체지향프로그래밍 (Object-oriented-programming) 을 하기 위해서는 객체라는 개념에 대해 먼저 알아야한다.

객체는 우리 생활에서 보면 강아지, 컴퓨터, 책 등이 모두 객체이다.
이런 객체를 객체 지향 기술의 핵심 개념이라고 한다.
객체는 '상태'와 '동작'을 가지고 있다.
예를 들면, 강아지라는 객체의 상태는 '이름', '품종','털색깔' 등이 될 수 있고, 객체의 동작은 '먹는다', '잔다','짖는다'등이 될 수 있다.

소프트웨어에서는 이러한 객체의 상태와 동작을 각각 필드(field)와 메소드(method)라고 한다.
클래스(class)는 객체에 대한 설계 (명세서)이며, 객체 지향 소프트웨어의 기본 단위이다.

 

1. 클래스 정의하는 방법

 

class puppy {
	
    private String name;		//이름
    private String age;			//나이
    private String breed;		//품종
    
    public puppy(){
    
    }
    public void eat(){
    	System.out.println("eat");
    }
    public void sleep(){
   	System.out.println("sleep");
    }
    public void talk(){
   	System.out.println("talk");
    } 
 }
    

* 필드 정의 : 객체의 상태(속성)을 나타낸다.
* 메소드 정의 : 객체의 동작을 나타낸다.

 

2. 객체 만드는 방법 (new 키워드 이해하기)

위에서 설계한 클래스로 객체 (인스턴스)를 만들어보자.
자바에서는 객체를 생성하기 위해 new 연산자를 사용한다.

Puppy myPuppy;		//참조변수선언
myPuppy = new Puppy();	//선언한 참조변수에 new 연산자를 통해 Puppy 객체 생성후, 반환된 참조값 저장

1.  Puppy 클래스의 객체를 참조할 수 있는 참조변수 myPuppy를 선언한다.

2. new 연산자를 이용해서 Puppy 클래스의 객체를 생성한다.
   -> 이때, new 연산자는 동적 메모리 할당을 통해 객체를 생성하고, 객체의 참조값을 반환한다. ( heap 메모리에 할당)
        즉,  객체가 생성된 메모리 주소를 반환한다.

3. = 연산자로 참조 변수  myPuppy와 객체를 연결한다.
   -> myPuppy에 저장된 값은 객체가 생성된 메모리의 주소값이다.

 

3. 메소드 정의하는 방법

메소드는 클래스 안에 선언된 특정한 작업을 수행하는 문장들의 모임이다.

<접근제어자> <반환형> <메소드의 이름> (<매개변수1의 자료형><매개변수1의 이름>, <매개변수2의 자료형><매개변수2의 이름> ....){
	
    //메소드 구현
}
public void eat(){

}

public String getName(String name){
	
    this.name = name;
    return name;
}

 

  • 각 메소드는 작업에 필요한 데이터를 입력받아서 처리한 후 결과를 반환한다.
  • 각 메소드는 오직 하나의 작업만을 하도록 작성하는 것이 좋다.
  • 반환형은 메소드가 반환하는 데이터의 타입을 지정하며, 어떤 타입도 가능하다.
    만약, 반환값이 없는 경우, void 라고 지정한다.
  • 외부에서 매개 변수를 통해 값을 전달할 수 있다.

 

4. 생성자 정의하는 방법

생성자란?

  • 객체가 생성될 때 객체를 초기화하는 특수한 메소드이다.
  • 클래스 이름과 동일한 메소드이다.
  • 반환값을 선언하지 않는다. 
class Puppy {

    String name;
    String breed;
    
    public Puppy (){
    
    }
    public Puppy (String name){
    	this.name = name;
    }
    public Puppy (String name, String breed){
    	this.name = name;
        this.breed = breed;
    }
    
    public static void main(String[] args){
    	Puppy tanee  = new Puppy();
        Puppy hoochu = new Puppy("후추");
        Puppy ddolee = new Puppy("똘이", 11);
    }
        
    

위의 예제 코드와 같이 생성자는 메소드 오버로딩이 가능하다.
객체 hoochu의 경우, 객체가 new 에 의해 생성될 때, "후추"의 값이 생성자의 value로 전달되고, value값이 name에 대입된다.

참조변수 = new 클래스이름(인수);
  • 참조변수 : 생성되는 객체를 가리키는 변수
  • 클래스이름 :  현재 생성되는 클래스 이름으로, ()가 붙으면 생성자가 된다.

  • 만약 클래스가 생성자를 가지지 않는다면, 자바에 의해 제공되는 기본 생성자를 사용한다.
    따라서, 어떤 클래스든지 생성자가 호출된다는 것을 알 수 있다.

  • new 연산자는 새로 생송된 객체를 가리키는 참조값을 반환하고, 이 참조값이 참조변수에 저장된다.

 

5. this 키워드 이해하기

1. this 키워드는 인스턴스 자기 자신을 가리키는 키워드이다.
2. this 키워드는 클래스를 기반으로 생성된 인스턴스를 가리키는 참조이다.

 

 

 

Ref.

📕 어서와 JAVA는 처음이지 - 천인국

'Language > Java' 카테고리의 다른 글

[Java] 멀티 스레드  (0) 2023.01.29
[Java] 배열 복사  (0) 2022.11.04