Java 공부

사용자정의 데이터타입 (UDDT)

고줭 2020. 12. 2. 15:03

User Defined Data Type 

오늘은 사용자정의 데이터타입에 대해 알아보자. (아직 내가 참조변수에 대한 공부가 부족하기에 알고있는거 부터..)
우리는 int, double, long, float... 등 기본데이터타입을 많이 사용했다. 그러나 이것만으로는 우리가 어떠한 데이터를 정의하고 정리하기에 부족함을 느낀다. 보통의 예는 Car로 많이 드는데 난 게임에 비유해보겠다. LOL 게임에 용이라는 정글 오브젝트가있다. 공교롭게도 객체를 뜻하는 단어도(object)이다. 바로 용으로 예를 들어보자.

우선 Dragon class을 만든다.

화염용이 울부짖었다.

간단히 안에 필드를 생성해주자.
필드(Field)란 '클래스에 들어가는 변수들을 정의해주는 것' 정도로 보면 될 거같다. 나도 정확히는 잘 모른다 ㅠ

public Dragon() { } 는 생성자(Constructor) 라는것이다. 위 사진처럼 생성자에 직접 값을 할당할 수 있다.
this란 클래스 필드에 변수를 가르킨다. (색깔이 같다.)

위와같이 간단히 정리후 DragonExample이란 클래스를 만들어보자~!

 *중요
우리는 Dragon이란 클래스를 d1이라는 이름으로 객체를 '생성'한 것이다.
Abc a = new Abc(); 이런식의 코드를 많이 봤을것이다. 객체 생성을해야 우리는 그 클래스에 접근 할 수 있다.

d1.name의 뜻을 생각해보자 풀어서 얘기해보자면 'Dragon이란 클래스를 d1이란 이름으로 접근할거야 그리고 d1에 있는 변수 중 name이라는 것에 접근할거야' 라고 볼 수 있다.

출력값

당연하게도 출력값은 이렇게 나온다.

 

지금까지 잘 이해했다면 이번엔 새로운 생성자를 만들어보자.

생성자에 매개변수를 추가한 경우

첫 생성자와 다른것이 있다면 이번엔 ()괄호안에 매개변수를 사용한 모습이다. 어려워 보이지만 한줄한줄 천천히 읽어보자.

우선 괄호안에 name, as, ad을 데이터타입에 맞춰 잘 정리했다. 순서가 바뀌어도 상관은 없다. 그러나 같은 모양의 생성자는 할 수없다. (Overrloading을 배워야 이해가능)

다시 첫째줄부터 name이라는 필드변수에 name이라는 변수를 할당할거야 라는 뜻
둘째는 attackSpeed라는 필드변수에 as라는 변수를 할당할거야
마찬가지로 셋째는 attackDamage라는 필드변수에 ad라는 변수를 할당할거야

이해가는가 조금 어렵다면 색깔로도 구분이 가능하다. 이 생성자를 다시 DragonExample이란 클래스에 적용해보자

 

바람 용이 울부짖었다.

객체를 생성하는 new Dragon() 괄호 안에 들어갈 매개변수를 넣어주면 생성자에 적용이된다. 이와 같이 했을때 출력값은?

역시나 잘 나온걸 확인할 수 있다.
이 정도까진 무리없이 따라왔으리라 생각한다. 게임을 하지않는 내 개발자 친구같은 사람들은 이해 못할수있지만 간단한 예시라 코드만봐도
무엇을 말하고자 하는지 알거라 생각한다. 

이 처럼 사용자정의데이터타입 (UDDT)은 어떤 객체를 표현하기위한 자료의 배열과 같다고 보면된다. 그러나 배열과 다른점은 분명하다.
int[] a = {1, 2, 3, 4, 5}; 처럼 정수형이면 정수형끼리 뭉쳐야하지만 Dragon은 String, double, int 같이 여러 데이터타입을 묶어 "용"이라는 객체를 표현한다는 것이다. 배울수록 놀라운 객체지향프로그래밍이다.

 

 

* 사용한 코드

 

 

'Java 공부' 카테고리의 다른 글

String , new String  (4) 2021.10.01
자바 공식문서 보는방법.  (0) 2021.03.29
그래들 스프링 이클립스에 임포트하기  (0) 2021.02.25
자바 배열 Array  (0) 2021.02.08
데이터타입 (Data Type)  (6) 2020.11.22