korean IT student

[Java-Live-Study] 5주차 - 클래스 본문

back-end/JAVA

[Java-Live-Study] 5주차 - 클래스

현창이 2021. 9. 17. 14:48

목표

자바의 Class에 대해 학습하세요.

학습할 것 (필수)

  • 클래스 정의하는 방법
  • 객체 만드는 방법 (new 키워드 이해하기)
  • 메소드 정의하는 방법
  • 생성자 정의하는 방법
  • this 키워드 이해하기

1. 클래스 정의하는 방법

  •  자바는 객체 지향 프로그래밍인데 이때 객체를 만들어 내기 위한 설계도와 같은 개념을 클래스라고 한다.
  •  객체의 상태를 나타내는 필드, 객체의 행동을 나타내는 메소드로 구성된다 
  • 클래스는 위와 같이 정의되어 사용됩니다. 변수와 메서드가 들어가고 이렇게 만들어진 객체를 만들기 위한 설계도일 뿐입니다. 실제로 객체를 만들기 위해서는 인스턴스화를 거쳐주어야 합니다.

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

클래스 객체 변수 = new 클래스();
  • 클래스를 정의했다면 클래스로부터 객체를 만들어 사용해야한다. 이러한 과정을 클래스의 인스턴스화라 정의합니다.
  • 객체는 new 키워드를 이용해 생성
  • new 키워드를 이용하면 메모리 힙(Heap)영역에 데이터를 저장할 영역을 할당 받은 후 해당 영역의 주소를 객체에게 반환하여 객체를 사용할수 있도록 만들어준다.

3. 메소드 정의하는 방법

[접근제어자] [반환타입] 메소드이름(매개 변수) {
    수행할 문장
}

 

  • 메소드는 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것입니다.
  • static 키워드를 사용하면 클래스 메소드를 선언할 수 있는데 클래스 메소드는 클래스가 메모리에 올라갈 때 함께 생성되어 객체 생성 없이 바로 사용할 수 있다.
    public class Test {
    
        public int sum(int num1, int num2) {
            return num1 + num2;
        }
        public static int staticSum(int num1, int num2) {
            return num1 + num2;
        }
        public static void main(String[] args) {
            Test test = new Test();
            int sumResult = test.sum(5, 10);
            int staticSumResult = Test.staticSum(10, 50);
    
            System.out.println("sumResult"  + sumResult);
            System.out.println("staticSumResult"  + staticSumResult);
    
        }
    }​

4. 생성자 정의하는 방법

 

  • 생성자를 만들어주는 이유
    • 인스턴스 생성시 필드에 초기값으로 부여하기위해 (new 클래스)
    • 인스턴스 생성에 필요한 초기화 명령을 실행 하기 위해
  • 변수를 선언하고 초기화하는 것과 마찬가지로 클래스를 생성하고 객체를 호출할 때 객체를 초기화 하기 위해 사용되는 것이 생성자이다.
  • 생성자는 기본 생정자, 묵시적 생성자, 명시적 생성자로 구분됩니다.
    • 기본 생성자 : 클래스 내부에 선언된 생성자가 없는 경우 객체 생성 시에 컴파일러가 자동으로 추가해주는 생성자
    • 묵시적 생성자 : 파라미터 값을 가지지 않는 생성자
    • 명시적 생성자 : 파라미터 값을 가지는 생성자
      class Person() {...} -> 기본 생성자 호출 
      class Person() {
      	//묵시적 생성자
      	public Person() {
      		System.out.println("생성되었습니다.");
      	}
      	
      	//명시적 생성자 
      	public Person(String name, int age){
      		this.name = name;
      		this.age = age;
      	}
      }​
    • 생성자는 리턴 타입을 가지지 않습니다.
    • 생성자는 클래스 이름과 동일합니다.
    • 모든 클래스는 생성자가 반드시 존재하고, 한개 이상의 생성자를 가진다.
    • 클래스 내부에 생성자를 선언하지 않으면 컴파일러가 기본 생성자를 선언해 사용한다.
    • 자동으로 생성되는 기본 생성자의 접근 제한은 클래스의 접근 제한과 동일

5. this 키워드 이해하기

  • this 키워드는 클래스가 인스턴스화 되었을때 자기 자신의 메모리 주소를 가지고 있다.
  • 즉, 자기자신을 나타내는 키워드 -> 자기자신의 변수나 메서드에 접근할 수 있다.
  •   필드의 name 변수를 사용하고 싶으면 this.name을 사용하면 된다.
    public Class Person {
        String name;
    
        Person(String name) {
            this.name = name;
        }
    
    }

 

Comments