본문 바로가기
Study/Java_study

Java_study_5 (클래스)

by hjshims 2021. 8. 4.

♨학습내용

더보기

☞ 클래스 정의하는 방법

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

☞ 메서드 정의하는 방법

☞ 생성자 정의하는 방법

☞ this 키워드 이해하기

 

  • 클래스 정의하는 방법
  • 클래스란?

- 자바에서 클래스(class)란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용된다. 

- 자바에서는 이러한 설계도인 클래스를 가지고, 여러 객체를 생성하여 사용하게 된다.

- 클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메서드(method)로 구성된다.

 

  •  클래스명

- 클래스명은 첫 글자를 대문자로 하는 명사이여야한다. (권장사항)

- 첫 글자를 따서 줄이거나 약어는 지양한다.

- 첫 글자에는 숫자가 올 수 없다.

- 자바 명령어, 키워드는 사용할 수 없다. (while, for, int 등 사용불가)

 

  •  클래스의 구성멤버 (필드(field), 생성자(constructor), 메서드(method))

- 이 구성 멤버들은 생략되거나 여러 개 작성될 수 있다.
- 필드 : 객체의 데이터가 저장되는 곳이다.

- 생성자 : 객체 생성 시 초기화를 담당한다.

- 메서드 : 메소드는 객체의 동작을 수행하는 블록을 뜻한다.

 


 

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

- 객체를 만들기 위해서는 new라는 키워드를 써야한다.

 

Person p;
p = new Person();

 

- 이렇게 한줄에 작성도 가능하다.

 

Person p = new Person();

 

- 여기서 생성된 객체는 어디에 저장되어 있는지 생각해보자.

- 메모리 저장공간은 stack 과 heap이 있다.

- 프리미티브 타입은 stack에 저장되고, 레퍼런스 타입은 heap에 저장된다.

new라는 키워드는 메모리상에 공간을 할당하고, 할당받은 공간은 주소리턴한다.

- 즉, Person은 stack에 저장되고 주소값을 가지고 있으며 new Person()에 의해 생성된 객체는 heap에 저장된다.

 


  • 메서드 정의하는 방법

- 메서드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있다.

 

접근제어자 리턴타입 메서드명(파라미터) {
      return 리턴타입;
}
public int getName(){
       return name;
}

 

  1. 접근 제어자 : 해당 메서드에 접근할 수 있는 범위를 명시한다.
  2. 리턴타입(return type) : 메서드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시한다.
  3. 메서드명 : 메서드를 호출하기 위한 이름을 명시한다.
  4. 매개변수 목록(parameters) : 메서드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시한다.
  5. 구현부 : 메서드의 고유 기능을 수행하는 명령문의 집합이다.

 


  • 생성자 정의하는 방법
  • 생성자란?

- 클래스가 인스턴스화 될 때, 즉 new 키워드로 인스턴스가 생성될 때 초기화를 담당한다.

- 꼭 정의하지 않아도 되며, 여러 개의 생성자를 생성할 수 있다.

 

public Person{
    String name;
    
    Person() {
        this("Sim");
    }

    Person(String name) {
        this.name = name;
    }
}

Person Sim = new Person();
Person Kim = new Person("Kim");

 

  • 오버로딩 (overlodaing)

- 매개변수의 타입, 개수, 순서를 달리 한 생성자를 여러 개 선언하는 것이다.

 

public class Product { 
	Product(){ } //기본생성자 
	Product(String name, int price){ ... } //매개변수 String , int 받는 생성자
	Product(String name, String color, int price, ){ ... } //매개변수 String , String ,int 받는 생성자 }

  • this 키워드 이해하기

- this는 객체(인스턴스) 자기자신을 가리키는 지정자로, parameter필드명똑같을 때 구별짓기 위해서 사용한다.

- this() 메서드는 생성자 내부에서만 사용할 수 있으며, 같은 클래스의 다른 생성자를 호출할 때 사용한다.

- this() 메서드에 인수를 전달하면, 생성자 중에서 메서드가 일치하는 다른 생성자를 찾아 호출해준다.

 

  • 호출 방법

1. 클래스의 속성과 생성자/메소드의 매개변수의 이름이 같은 경우

 

public class Person {
    String name;

    public void setName(String name) {
        this.name = name;
    }
}

 

2. 클래스에 오버로딩된 다른 생성자 호출

 

public class Person {
    String name;
    int age;
    
    Person() {
        this("아이유", 29);
    }

    Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

 

3. 객체 자신의 참조값을 전달하고 싶을 때

 

public class Person {
    String name;
    int age;
    
    Person() {
    }

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public Person getPerson() {
        return this;
    }
}

 


 

'Study > Java_study' 카테고리의 다른 글

Java_study_7 (패키지)  (0) 2021.08.11
Java_study_6 (상속)  (0) 2021.08.09
Java_study_4 (제어문)  (0) 2021.08.01
Java_study_3 (연산자)  (0) 2021.07.26
Java_study_2 (자바 데이터 타입, 변수 그리고 배열)  (0) 2021.07.26