티스토리 뷰
* 본 포스팅은 인피니티 북스의 Power JAVA 2판을 참고하여 작성되었습니다.
* 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다.
필드(field) : 클래스 안에서 선언되는 멤버 변수
지역 변수(local variable) : 메소드, 블록 안에서 선언되는 변수
매개 변수(parameter) : 메소드 선언에서의 변수
class
{
public int speed //필드
{
void start(int s) //매개 변수
{
int t; //지역 변수
}
}
}
필드를 선언 할 때는 접근 지정자, 필드의 타입, 필드의 이름 세가지를 정해줘야 한다.
접근 지정자에는 public과 private가 있으며, public은 모든 클래스로 부터 접근 가능, private는 클래스 내부에서만 접근 가능.
접근자와 설정자
접근자(accessor) : 필드 값을 반환한다. 일반적으로 게터(getter) 라고 부르기도 한다.
설정자(mutator) : 필드 값을 설정한다. 일반적으로 세터(setter) 라고 부르기도 한다.
접근자와 설정자를 사용하면 다음과 같은 장점이 있다.
- 접근자에서 잘못된 값이 넘어오는 경우 필터링을 통해 사전 차단 가능
- 필요할 때 마다 필드 값 계산해서 반환 가능(?)
- 설정자를 제공하지 않을 경우 읽기만 가능한 필드 생성 가능
대충 다음과 같은 느낌이다.
class Car {
String color;
public String getColor() //접근자
{
return color;
}
public void setColor(String c) //설정자
{
color = c;
}
}
public class CarTest1{
public static void main(String[] args) {
Car myCar = new Car();
myCar.setColor = "RED"; //설정자 사용
System.out.println(myCar.getColor); //접근자 사용
}
}
public void setSize(int w, int l) {
width = w;
length = l;
}
메소드를 선언할 때는 접근 지정자, 반환형, 매개변수, 메소드 내부 내용이 필요하다.
위 소스에서는 접근 지정자 public, 반환형 void, 매개변수 int w와 int l, 메소드 내부 내용 width = w; length = l;
C에서 값을 전달할 때는 값에 의한 전달(Call by Value)와 참조를 통한 전달(Call by Reference) 두 가지가 있지만 자바에는 값에 의한 전달(Call by Value) 한 가지 밖에 없다.
매개변수의 자료형이 다르면 메소드의 이름은 같아도 된다. 이러한 메소드들을 중복 메소드라고 한다. 하지만 중복 메소드는 코드 해석을 어렵게 만들 수 있으므로 주의깊게 사용해야 한다.
가변 길이 인수(variable-length arguments) : JDK 5 부터 다수의 인수를 넘겨야할 때 인수의 총 갯수를 지정해주지 않고도 가변적 개수의 인수들을 전달할 수 있다. 가변 길이 인수를 사용하기 위해서는 다음과 같이 매개 변수 자리에 (자료형 ... 변수 이름) 이렇게 사용하면 된다.
VarArgsTest.java
class Test {
void sub(int... v) { //가변 길이 인수 사용
System.out.println("인수의 개수 : " + v.length);
for (int x : v)
System.out.print(x + " ");
System.out.println();
}
}
public class VarArgsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test c = new Test();
c.sub(1);
c.sub(2, 3, 4, 5, 6);
c.sub();
}
}
가변 길이 인수 기능은 확실히 나중에 유용하게 사용할 수 있을 것 같다.
'개인공부 > JAVA' 카테고리의 다른 글
Java 11 : 배열(Array) (0) | 2014.08.11 |
---|---|
Java 10 : 생성자와 정적 메소드 (0) | 2014.08.11 |
Java 09 : PowerJava2 p.192 LAB 1 (0) | 2014.07.30 |
Java 07 : PowerJava2 p.169 LAB 1 (0) | 2014.07.30 |
Java 06 : 문자열(String) 클래스 (0) | 2014.07.30 |
Java 05 : 클래스와 객체 (0) | 2014.07.30 |
Java 04 : 지나가는 switch 문 예제 (0) | 2014.07.16 |