# 타입으로서의 클래스 사용법
타입으로서 클래스를 사용하는 방법이 궁금합니다.
sehongpark님의 답변
## 답변
클래스 또한 하나의 타입으로서, 기본(primitives) 타입과 마찬가지로 사용하면 됩니다. 클래스 타입은 **레퍼런스 타입**(reference types)이라고도 합니다.
## 레퍼런스 타입의 특징
레퍼런스 타입은 아래와 같은 특징을 같습니다.
- 대문자로 시작: `String`, `Scanner`, `ArrayList`, ...
- 객체를 가리킴
- 자바에서 제공되는 클래스 뿐만 아니라, 사용자가 직접 만든 클래스 또한 타입으로 사용 가능.
## 코드 예
1) `String` 객체를 파라미터로 전달
```
public class Main {
public static void main(String[] args) {
String str1 = "헬로"; // 문자열 객체를 str1에 연결
String str2 = "월드!"; // 문자열 객체를 str2에 연결
String result = concat(str1, str2);
}
public static String concat(String a, String b) {
return a + ", " + b;
}
}
```
2) 직접 만든 `Hero` 객체를 파라미터로 전달
```
public class Main {
public static void main(String[] args) {
/* 두 영웅 인스턴스 생성 */
Hero a = new Hero("아서스", 50);
Hero b = new Hero("레오나", 35);
/* 아서스의 펀치 */
a.punch(b);
}
}
class Hero {
// 필드
String name;
int hp;
// 생성자
Hero(String s, int i) {
name = s;
hp = i;
}
// 펀치 메소드
void punch(Hero target) {
System.out.printf("[%s]의 펀치!\n", name);
System.out.printf("\t%s의 HP 감소: %d", target.name, target.hp);
target.hp -= 10;
System.out.printf(" -> %d\n", target.hp);
}
}
```
## 참고자료
---
1. https://goo.gl/Auo5Cs