JAVA 자료실

필드(Field)...메소드(Method)...

페이지 정보

작성자 최고관리자 작성일 70-01-01 09:00 조회 60 댓글 0

본문

필드(field)
필드(field) : 클래스 안에서 선언되는 멤버 변수
지역 변수(local variable) : 메소드, 블록 안에서 선언되는 변수
매개 변수(parameter) : 메소드 선언에서의 변수
[code=php]
class
{
    public int speed //필드
    {
        void start(int s) //매개 변수
        {
            int t; //지역 변수
        }
    }
}
[/code]

필드를 선언 할 때는 접근 지정자, 필드의 타입, 필드의 이름 세가지를 정해줘야 한다.
접근 지정자에는 public과 private가 있으며, public은 모든 클래스로 부터 접근 가능, private는 클래스 내부에서만 접근 가능.

접근자와 설정자
접근자(accessor) : 필드 값을 반환한다. 일반적으로 게터(getter) 라고 부르기도 한다.
설정자(mutator) : 필드 값을 설정한다. 일반적으로 세터(setter) 라고 부르기도 한다.

접근자와 설정자를 사용하면 다음과 같은 장점이 있다.
접근자에서 잘못된 값이 넘어오는 경우 필터링을 통해 사전 차단 가능
필요할 때 마다 필드 값 계산해서 반환 가능(?)
설정자를 제공하지 않을 경우 읽기만 가능한 필드 생성 가능

대충 다음과 같은 느낌이다.

[code=php]
class Car {

    String color;

    public String getColor() //접근자
    {
        return color;
    }
    public void setColor(String c) //설정자
    {
        color = c;
    }
}
[/code]

[code=php]
public class CarTest1{

    public static void main(String[] args) {

        Car myCar = new Car();

        myCar.setColor = "RED"; //설정자 사용
        System.out.println(myCar.getColor); //접근자 사용
    }
}
[/code]

메소드 (method)
[code=php]
public void setSize(int w, int l) {

    width = w;
    length = l;
}
[/code]

메소드를 선언할 때는 접근 지정자, 반환형, 매개변수, 메소드 내부 내용이 필요하다.
위 소스에서는 접근 지정자 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
[code=php]
class Test {
    void sub(int... v) { //가변 길이 인수 사용
        System.out.println("인수의 개수 : " + v.length);
        for (int x : v)
            System.out.print(x + " ");
        System.out.println();
    }
}
[/code]

[code=php]
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();
    }

}
[/code]

결정자, 접근자에 대한 개념과 참조 변수의 개념 정도가 중요할 것 같고, 가변 길이 변수도 알아두면 유용할 것 같다.

BoxTest.java
[code=php]
class Box {
    // 필드 정의
    int width;
    int length;
    int height;

    // 메소드 정의
    // 각 필드 설정자
    void setWidth(int num) {
        this.width = num;
    }

    void setLength(int num) {
        this.length = num;
    }

    void setHeight(int num) {
        this.height = num;
    }

    // 각 필드 접근자
    int getWidth() {
        return this.width;
    }

    int getLength() {
        return this.length;
    }

    int getHeight() {
        return this.height;
    }

    // 부피 계산 메소드
    int getVolume() {
        return this.height * this.length * this.width;
    }

    // 상태 출력 메소드
    void print() {
        System.out.println("상자의 너비 : " + this.getWidth());
        System.out.println("상자의 길이 : " + this.getLength());
        System.out.println("상자의 높이 : " + this.getHeight());
        System.out.println("상자의 부피 : " + this.getVolume());
    }
}
[/code]

[code=php]
public class BoxTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Box box1 = new Box();

        // box1 설정자 사용
        box1.setHeight(100);
        box1.setLength(100);
        box1.setWidth(100);

        // box1.getVolume(), print() 호출
        box1.getVolume();
        box1.print();

        Box box2 = new Box();

        // /box2 설정자 사용
        box2.setHeight(200);
        box2.setLength(200);
        box2.setWidth(200);

        // box2.getVolum(), print() 호출
        box2.getVolume();
        box2.print();

        // box2에 box1 대입 후 상태 출력
        box1 = box2;
        box1.print();

    }

}
[/code]

댓글목록 0

등록된 댓글이 없습니다.

알림 0