[Java] 클래스
목차
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는 처음이지 - 천인국