본문 바로가기
IT /1) 자바

자바독학) Setter,Getter,private,Class 배열

by 세세tv 2019. 10. 23.

 

프로젝트명 : F7_SetterGetter

패키지명 : setget

클래스명 : SetterGetter

 

setter는 private 변수 값을 변경하는 메서드입니다.

getter는 private 변수 값을 출력하는 메서드입니다.

 

 

예를 들어 

private String brand = "스타벅스";

String aa = "아이스아메리카노";

int price = 4300;

 

예를 들어 스타벅스라는 카페가 있습니다.

메뉴와 이름은 변경이 가능하지만

스타벅스라는 이름은 변경하지 못하게

private로 변경했습니다.

 

단순한 예를 들면

특별 매장은 가격이 다를 수 있고.

해외 매장은 메뉴명이 영어인지, 한국어인지 다를 수 있습니다. 

 

 

그런데! main에서는 오류가 발생합니다.

private로 만든 변수는 출력이 불가능합니다!

수정도 안되고 뭐 점 . 찍어서 할 수 있는 게 없네요!

 

 

Class에서 print라는 메서드를 활용하면

private로 만든 브랜드를 출력할 수 있습니다.

 

메서드는 출력이 가능하다?

메서드로 값 변경이 가능하지 않을까요?

 

 

set을 입력하시고 자동완성을 사용해보시면

setBrand가 있습니다.

 

파라미터로는 String을 받으라고 하네요

 

 

set과 get을 만들었습니다.

둘 다 자동완성을 통해 만들었고!

 

getBrand는 return을 통해 brand의 값을 보내줍니다.

 

setBrand는 파라미터로 String을 받고,

brand의 값을 String으로 받은 name으로 변경해줍니다.

 

 

main에서 브랜드를 출력하기 위해서는

sg.getBrand()를 출력하시면 됩니다.

sg.getBrand() = return brand;

이니 sg.getBrand() 자체가 brand입니다.

 

예를 들어 한국에서는 간판을 한글만 사용 가능하니

변경하라!라고 한다면

 

sg.strBrand("별다방");

String타입의 값으로 별다방을 주었으니

 

Setter메서드 즉, setBrand메서드에서

brand = 별다방

이 됩니다.

 

다시 출력해보면 별다방으로 변경이 되었습니다.

 

 

 

조금만 더 보겠습니다

 

패키지명 : setget2

클래스명 : Person, PersonMain

 

클래스 두 개 만들어 주겠습니다.

 

private String name = "";

변수 하나 생성해주겠습니다.

 

 

 

set + 자동완성을 이용하여 name의 settet를 만들어보겠습니다.

name이 String이니 파라미터도 String이 되겠습니다. 

 

 

여기서 this가 나옵니다.

파라미터로 받은 name

private로 만들어 둔 name

 

이 두 가지를 비교하기 위해서

 

name = name

어떤 게 어떤 내용인지 인식하기가 어렵습니다.

 

this.name = 클래스에서 생성된 name

name = 파라미터로 받은 name

 

this는 클래스 자신을 뜻합니다.

클래스 자신이 가지고 있는 name은 this.를 이용하여 표시합니다.

 

 

 

settet와 getter를 쉽게 만들어 봅시다.

 

화면에서 우클릭해주시고

 

Source - Generate Getter and Setters

이동해주겠습니다.

 

 

창이 하나 나오는데

private로 만든 변수가 모두 나옵니다.

 

현재는 name하나가 있네요

 

모든 변수에 setter,getter가 필요하다면 Select All을 클릭하고 Generate

getter, setter 둘 중에 한 가지만 필요하다면

Select Getters , Select Setters - Generate를 통해

 

쉽게 만들 수 있습니다.

 

현재 상황으로는 private변수가 하나뿐이니

자동완성이 더 빠를 수 있겠네요.

 

 

 

 

 

Main에서 setters,getters를 사용해보겠습니다.

 

setName("임세주");

에서

 

임세주는 name

 

private name은 this.name

 

위의 그림을 보시는 게 더 빠르겠네요!

 

 

패키지명 : setget3_Arr

클래스명 : ArrayClass , ArrayMain

 

클래스 두 개 만들어주겠습니다.

이제는 배열입니다!

 

private String name = "";

private int age = 0;

 

private변수를 두 개 만들고 setters, getters를 만들어주겠습니다.

 

 

자동으로 만들어진 것을 확인해주시고!

메인에서 클래스를 호출해 보겠습니다.

 

 

저는 클래스를 호출할 건데!

배열 형태로 할 것입니다.

 

ArrayClass[] ac = new ArrayClass[5];

클래스 호출하는데 방이 다섯 개를 만들었습니다.

 

모든 방을 new를 통하여 메모리 공간을 잡아줍니다.

 

 

ac[0].setName("임세향");

ac[0].setAge(20);

 

ac[1].setName("임세주");

ac[1].setAge(60);

 

ac[2].setName("임세세");

ac[2].setAge(35);

 

이렇게 방 세 개만 setter를 이용하여 값을 넣어줬습니다.

 

for문을 이용하여 출력하겠습니다.

값이 없는 3,4번 방은 제외하고 출력이 됩니다.

 

이렇게 배열을 사용할 수 있다!

는 것을 인지하셔야 합니다.

 

지금까지 배운 내용을 모두 연동하여 사용하실 수 있다면

실력이 빠르게 성장할 것입니다.

댓글