5주차 과제. 자바의 class에 대해 학습하세요.

Jiwon·2022년 7월 22일
0

JAVA

목록 보기
3/4

학습할 것(필수)

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

클래스 정의하는 방법

클래스란.
객체를 정의해 놓는 것 객체 설계도 또는 틀 이라고 할 수 있다.

클래스에는 객체가 가지는 공통적인 속성과 기능들이 정의되어 있다.
이 속성들을 매개변수 또는 필드 라고 부르며
기능은 메서드 라고 부른다.

클래스를 이용해 여러개의 객체 생성 가능

class 클래스명 {
	멤버변수
    메소드
    생성자		//필수이나 생략가능. 아래 생성자 탭에서 설명
}
class Lion {
	String name;
    int age;
    
    void growth(){
    	age++;
    }
    
    Lion(){ ... }
}

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

클래스를 이용해서 객체 생성 가능.
이 과정을 인스턴스화 한다고 하며
인스턴스화를 통해 만들어진 객체를 -> 인스턴스 라고 한다.

클래스명 변수명;		//클래스의 객체를 참조하기 위한 변수 선언
변수명 = new 클래스명();		//클래스의 객체를 생성한 후 객체의 주소를 참조 변수에 저장
Lion simba;
simba = new Lion();

메서드 정의하는 방법

메서드는 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것.
재사용함으로써 중복된 코드를 줄일 수 있다.

반환타입 메소드명 (타입 변수명, 타입 변수명, ... ) //선언부
{		//구현부
		//메서드 호출 시 실행 코드
}
int add(int a, int b){
	return a+b;
}

메소드는 선언부 + 구현부로 이루어져 있다.

선언부
반환 타입, 메서드명, 매개변수 선언으로 이루어짐

반환 타입 : 메서드 작업 후 출력하는 결과물의 타입
반환하는 값이 없을 경우 void 적어준다.

메서드명 : 명명규칙에 따라 작성.
이름만 봐도 어떤 작업을 수행하는지 알 수 있도록 작성하는 것이 좋음

매개변수 선언 : 메서드가 작업을 수행하는데 필요한 값들을 제공받기 위한 것.
필요한 값이 없다면 빈 괄호() 로 둔다.

일반적은 변수 선언과는 달리, 각 변수의 타입이 같더라도 각각의 변수 타입을 전부 적어줘야 됨.

구현부
메서드 실행시 수행할 문장

메서드에는 적어도 하나의 return 문이 있어야 함.
반환 값이 없을 경우 return 문이 없어도 에러가 나지 않은 이유는
컴파일러가 자동으로 메서드의 마지막에 return;을 추가해주기 때문.

반환 값에 들어가는 변수의 타입은 반환 타입과 같거나 적어도 자동 형 변환이 가능한 것이어야 한다.

생성자 정의하는 방법

생성자는 클래스에 존재하며 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다.
생성자의 이름은 클래스와 같아야 한다.
메서드와 유사하게 생겼지만 생성자는 반환 값이 없다.

하나의 클래스에 여러 개의 생성자가 존재할 수 있으며 각각의 생성자는 모두 다른 매개변수를 가져야 함.

class Lion{
	Lion() {...}		// 매개변수가 없는 생성자
	Lion(String name, int age) {...}	// 매개변수가 있는 생성자
}

기본 생성자
클래스에는 하나 이상의 생성자가 있어야 한다.

생성자가 객체를 초기화해주기 때문.
생성자가 없다면 객체 생성 후 각각의 속성에 접근해 하나하나 초기화를 해야 하는 불상사가 발생했을 수도 있다.

그러나 클래스를 작성할 때 생성자를 만들어 주지 않아도 프로그램이 실행되는데,
생성자가 하나도 없을 경우 컴파일러가 기본 생성자를 만들어주기 때문.

클래스이름() {}

ex)
Lion() {}

기본 생성자는 선언한 생성자가 하나도 없을 때만 컴파일러가 추가해 주기 때문에
아래와 같은 상황은 오류 발생.

Class Lion{
	Lion(String name){...}
}

Class Test{
	public static void main(String[] args){
    	Lion simba = new Lion();
    }
}

Lion(String name)이라는 생성자를 선언해줬기 때문에 컴파일러는 다른 생성자를 추가하지 않는다.

this 키워드 이햐하기

this는 참조 변수로 인스턴스 자신을 가리킨다.

생성자를 포함한 모든 인스턴스 메서드에는 자신이 관련된 인스턴스를 가리키는 참조변수 this가 지역변수로 숨겨진 채로 존재.

참조 변수를 통해 인스턴스의 멤버에 접근할 수 있는 것처럼,
this로 인스턴스 변수에 접근 가능하다.

생성자에서 this를 이용하여 다른 생성자 호출 가능.
이때 반드시 첫 줄에서만 사용해야 하며 this() / this(매개변수)와 같이 사용.

매개 변수와 인스턴스 변수 명이 동일할 때 인스턴스 변수 앞에 this를 붙임으로써 둘을 구분할 수 있다.

class Lion {
	String name;
    int age;
    
    Lion(String name, int age){
    	this.name = name;	// 인스턴스 변수 name에 생성자를 호출할 때 넘긴 매개변수 name을 저장한다.
        this.age = age;
    }
}

https://soojpark.tistory.com/12

profile
과연 나는 ?

0개의 댓글