더 많이 실패하기

코딩공부 23일차: 프로그래머스 자바 입문 - 6. 클래스 다듬기 본문

자바

코딩공부 23일차: 프로그래머스 자바 입문 - 6. 클래스 다듬기

김발자~ 2022. 8. 23. 22:26
반응형

#비전공자개발 공부 23일차

프로그래머스 자바 입문 강의를 듣는 중이다

https://school.programmers.co.kr/learn/courses/5

 

자바 입문

자바 입문 가장 널리 쓰이는 프로그래밍 언어 Java로 프로그래밍의 기초를 다져보세요. 이 강의의 내용을 책으로 만나고 싶으시면 여기를 눌러 책 정보를 확인하세요. 강의를 다 들었는데, 지금

school.programmers.co.kr

 

 

 


파트6 클래스 다듬기:

생성자

 

클래스 생성 후 객체를 만들 때 new연산자 뒤에 붙는 것이 생성자

생성자는 메소드와 달리 리턴타입을 적지 않는다

매개변수를 지정하지 않으면 컴파일할 때 자동적으로 매개변수 없는 생성자가 만들어진다

이러한 생성자를 기본 생성자라고 한다

 

위처럼 생성자를 하나 생성하고 연결된 다른 파일로 넘어간다

첫 번째 예시처럼 car파일에서 string 형식의 매개변수 n이 있는 생성자를 넣으면

기본 생성자를 만들어내지 않으므로 6줄에 있는 생성자는 오류를 띄운다

따라서 사용자가 정의한 생성자를 따라 객체를 만드는 수밖에 없다

생성자는 객체를 만들 때 필드를 초기화하는 역할

 

 

실습 엄청 헤맷는데 Person을 person이라고 써서 그런 거였다

이놈의 대소문자..

답 떠먹여줫는데도 대문자하나 떄문에 엄청 헤맸다

 

 

 


파트6 클래스 다듬기:

this

 

변수는 알아보기 쉬운 이름으로 하는 것이 적절하다

따라서 위에 만든 변수 n은 name으로 직관적으로 알 수 있게 해야 한다

하지만 이러면 객체 이름(클래스 필드)과 변수 이름이 겹쳐져 성립되지 않을 수 있는데

이럴 때 this를 사용하면 현재 객체, 자신을 나타내게 된다

즉 Car 클래스의 생성자가 클래스 필드 name에 매개변수 name을 저장하게 한다

 

클래스 안에서 그 클래스가 갖고 있는 메소드를 쓰고 싶을 때도 this.메소드이름 으로 사용할 수 있다

 

 

 


파트6 클래스 다듬기:

메소드 오버로딩

 

매개변수의 수, 타입이 다를 때 구분하기 쉽게 하기 위해 같은 이름의 메소드를 여러 개 만들 수 있다

위의 예시는 매개변수의 숫자나 타입이 다른데 이럴 때 사용할 수 있다

위의 예시들을 plus라는 같은 이름의 메소드로 묶어 정의했다

이러한 경우를 메소드 오버로딩이라고 한다

 

사용하는 방법은 간단하다

다른 파일로 만들어 메소드를 만든 클래스로 생성자를 호출한 뒤

변수.메소드명 을 치면 만든 메소드 오버로딩 목록이 나오므로

그때 사용하고 싶은 메소드를 선택해 쓰면 된다

 

실습에서 메소드 복습!

반환값이 없는 메소드는 public 옆에 void를 적는다

 

 

 


파트6 클래스 다듬기:

생성자 오버로딩과 this

 

생성자도 메소드와 같다

매개변수의 수, 타입이 다를 때 구분하기 쉽게 하기 위해 같은 이름의 생성자를 여러 개 만들 수 있다

이전 강의에서 생성자를 하나라도 만들어두면 기본 생성자를 사용할 수 없다고 했지만

두 번째 선언한 생성자처럼 비게 만들면 기본 생성자와 같은 역할을 한다

 

기본 생성자에서 name과 number값을 초기하고 싶으면 빨간색으로 표시한 부분처럼 적으면 되지만

그러면 아래 있는 생성자(this.name, this.number)와 중복이 되므로

파란색 상자처럼 this( );로 자신의 생성자를 호출해 기본생성자 사용시원하는 값으로 초기화할 수 있다

 

this를 사용함으로써 코드의 중복을 막는다

 

 

 

실습에서도 this()로 생성자를 호출하여 만들도록 한다

 

 

 


파트6 클래스 다듬기:

패키지

 

파일을 종류별로 구분하고 폴더에 정리하는 것처럼

관련있는 클래스들끼리 모아 정리하는데, 이때 자바에서 폴더와 같은 개념이 패키지

보통 패키지 이름은 도메인 이름을 거꾸로 적고 그 뒤 프로젝트 이름을 붙인다

com.프로젝트이름 같은 식이다

다만 숫자는 넣을 수 없어서 영어로 번역해 쓴다

이렇게 이클립스 안에서 패키지를 만들면 저장된 폴더에는 com 폴더 안 프로젝트이름 폴더 안 java 파일이 생긴다

 

다른 패키지에 있는 클래스를 불러오기 위해서는

import를 사용한다

com.eightcruz.first 패키지에 있는 Hello 클래스를 first 패키지의 HelloExam에서 사용하기 위해

Helloexam에서 컨트롤 + 쉬프트 + o 를 누르면 빨간색으로 표시한 import가 뜬다

 

import 옆에 마지막 클래스 이름(예시에서 Hello)에는 *를 넣으면 그 패키지에 있는 모든 클래스를 사용한다는 뜻이다

 

 

 

 


오.. 드디어 * 등장

아직도 용어들이 헷갈리지만 진도 나가면서 적응 중이다

복습 꾸준히 해야 정신 차릴 수 있을 듯 오늘도 복습하다가 힘들었다..

반응형
Comments