[JAVA] 클래스 #5

1

이 포스팅은 백기선님이 2020년 11월 진행하신 라이브 스터디과정을 토대로 작성되었습니다. 아래 URL에 들어가시면 다른 분들이 정리하신(그리고 제가 참고한) 자료들이 올라와 있습니다.
https://github.com/whiteship/live-study/issues/5

==========================================================

목표

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

학습할 것

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

==========================================================

1. 클래스 정의하는 방법

객체지향 프로그래밍이란?

  • 현실 세계의 사물을 객체로 보고, 객체의 속성과 기능을 기반으로 프로그래밍하는 기법

클래스란?

  • 객체지향 프로그래밍에서의 "객체"를 생성하기 위한 일종의 틀

클래스의 구조: 필드, 메서드, 생성자

1) 필드(멤버 변수)

  • 객체지향에서 속성에 해당

2) 생성자

  • 변수에 초기값이 있는 것처럼 클래스에서도 동일한 형식으로 초기화를 해줘야 하는데, 생성자가 이 역할을 수행

3) 메소드

  • 객체지향에서 기능에 해당

클래스 생성 예시

ex) IceCream.java

public class IceCream {
	//1) 필드(멤버 변수) 선언
    private String name;
    private String flavor;
   	private String color;
    
    //2) default 생성자, 생략이 가능하지만 파라미터를 가진 생성자가 있을 시 반드시 명시해야 함
    public IceCream() {
    
    }
    
    //2) 파라미터를 가진 생성자, 파라미터를 가지고 변수를 초기화
    public IceCream(String name, String flavor, String color) {
    	this.name = name;
        this.flavor = flavor;
        this.color = color;
    }
    
    //3) 메소드: 이름을 가져오는 행위
    public String getName() {
    	//메소드 내부 기능
        return name;
    }
    
}

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

객체를 만드는 방법(인스턴스화)

예시에서 IceCream이라는 클래스를 생성한 후, 이 클래스로부터 객체를 만들어 사용한다.
이런 과정을 "인스턴스화" 라고 한다.

new 연산자

  • 클래스 타입의 인스턴스를 다른 java파일들에서 생성해주는 역할을 함
  • new 연산자로 인스턴스를 선언하면 --> 메모리(heap영역)공간을 할당받고 그 공간의 참조값을 객체에게 반환해줌

객체 만들기 예시

ex) main.java

//클래스이름 변수명 = new(키워드) 클래스이름(생성자 호출)

IceCream iceCream = new IceCream();	//기본 생성자
IceCream mintChoco = new IceCream("민트초코", "민트초코맛", "민트색");
IceCream merona = new IceCream("메로나", "메론맛", "초록색");

//클래스 내부에 정의되어 있는 getName이라는 메소드를 호출
mintChoco.getName();	//민트초코

3. 메소드 정의하는 방법

메소드란?

  • 클래스의 구조 중 하나
  • 객체지향에서 기능에 해당하며, 정의된 기능들을 실행하는 역할

메소드 정의 예시

ex) IceCream.java

//메소드 정의하는 방법
/* 
 접근제어자 리턴타입 메소드명(파라미터) {
 //실행할 코드
 return 리턴타입;		*/
 
 public String getFlavor() {
 	return flavor;
 }

메소드는 기본적으로 리턴타입과 메소드 명만 있어도 정의가 가능하다.

접근제어자

4. 생성자 정의하는 방법

생성자 선언 방법

public 클래스이름() {

}

생성자 선언 조건

  1. 생성자의 메서드명은 반드시 클래스 이름과 동일해야 한다.
  2. 생성자 앞에 붙는 접근제어자는 반드시 public 이어야 한다.
  3. 생성자는 return값을 가지지 않는다.

생성자 여러개를 가지는 경우

ex) IceCream.java

public class IceCream {

    private String name;
    private String flavor;
   	private String color;
    
    //기본 생성자
    public IceCream() {
    
    }
    
    //매개변수를 가진 생성자
    public IceCream(String name, String flavor) {
    	this.name = name;
        this.flavor = flavor;
    }
    
    //매개변수를 가진 생성자
    public IceCream(String name, String flavor, String color) {
    	this.name = name;
        this.flavor = flavor;
        this.color = color;
    }

5. this 키워드 이해하기

인스턴스 자기 자신을 가리키는 참조변수

this() ??

  • this()를 사용하여 클래스 내부에 선언한 생성자 메소드를 불러올 수 있다.
    ex) IceCream.java
public class IceCream {

	private String name;
    private String flavor;
    private String color;
    private Company company;
    
    public IceCream() {
    	//밑에 선언된 생성자를 부른다
    	this("메로나", new Company("빙그레", "경남공장");	
    }
    
    public IceCream(String name, Company company) {
    	this.name = name;
        this.company = company;
    }
}

2개의 댓글

comment-user-thumbnail
2021년 7월 29일

어머~~ 땡진맘 덕분에 클래스에 대해 잘 배워가요~~ 호호호~

1개의 답글