Backend/JAVA

자바(6)-Class (변수와 메서드)

creativeDeveloper! 2022. 9. 12. 14:37
728x90

1. 변수 선언위치에 따른 변수 종류

class Variables{			// 클래스 영역
	
    int iv;					// 인스턴스변수(iv)
	static int cv;			// 클래스변수(static 변수)
    
    void method(){			// 메서드 영역
    
    int lv=0;				// 지역변수(lv)
  }
}

1-1. 인스턴스 변수(iv)

클래스 영역에 선언되고, 클래스의 인스턴스 생성시 만들어진다. 

1-2. 클래스변수(cv)

클래스 변수를 선언하는 방법은 iv 앞에 static만 붙이면 된다.

클래스 변수의 경우 모든 인스턴스가 공통된 변수를 공유하게 된다. 그래서 한클래스 내에서 모든 인스턴스들의 공통적인 값을 유지해야하는 속성의 경우 클래스 변수로 선언해야 한다.

1-3. 지역변수(lv)

매서드 내에 선언되어 매서드내에서만 사용 가능하다.

예를들어, for 문이나 while문의 블럭내에서 선언된 지역변수는 해당 블록 { } 내에서만 사용가능하고 블럭을 벗어나면 소멸되어

사용할 수 없게된다.

아래는 iv와 cv를 이용한 사례이다.

class Card {
	
    String kind;				// 무늬
    int number;					// 숫자
    
    static int width=100;		// 너비
    static int height=250;		// 높이

}

너비와 높이는 Card class의 인스턴스들이 공통적으로 같은 값을 유지해야 하므로 클래스 변수(cv)를 사용하였고,

무늬와 숫자는 Card 인스턴스 고유의 무늬와 숫자를 유지하고 있어야해서 인스턴스변수(iv)를 사용하였다.

2. 메서드

메서드의 정의는 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것이다. 클래스내에서 존재하는 메서드는 함수와 유사하지만 독립적으로 사용될 수 있다. 

그렇다면 메서드를 왜 사용해야 할까?

1. 높은 재사용성 - > 한번 만들어 놓으면 몇번이든 재호출이 가능하다

2. 중복된 코드제거 - >  프로그램 작성시 반복되는 문장들을 묶어서 하나의 메서드로 대체가능. 이렇게 함으로써 변경사항이 생길 시 수정할 코드 양도 줄고 오류가 발생할 가능성도 줄어든다. 

2-1 메서드의 형태

	int add( int x, int y ) {
    	
        int result=x+y;
        
        return result;	// 결과를 반환
    
    }

위 코드를 설명하면 반환타입은 int형이고 메서드의 이름은 add이고, 매개변수는 int x, int y 가 되고, return이 있으므로결과를 반환한다는 뜻이다.(반환값이 없으면 int의 앞에 void가 붙는다.)

* return문은 매개변수가 여러개일 수 있어도 단 하나의 값만을 반환할 수 있다.

2-2 메서드의 실행과정

Class MyMath {						// MyMath 클래스
	
    // add 메서드를 가졌고, 매개변수가 a,b인 long type의 메서드
    
    long add(long a, long b) {
    	long result=a+b;
        return result;		// 두 매개변수의 결과값을 반환한다.
    //  return a+b;   // 위의 두줄을 아래와 같이 한줄로 쓸 수 있다.   
  }
	 long substract(long a, long b) {    return a-b;     }	// substract 메서드를 사용
     long multiply(long a, long b) {    return a*b;     }	// multiply 메서드를 사용
    
    
}

이제 MyMath 클래스의 메서드를 사용하기 위해서 먼저 MyMath 클래스에 관한 객체를 생성해야 한다.

class MyMathTest{
	// 반드시 메인메서드 안에서 호출해야한다.
	public static void main(String[] args) {
		
        MyMath mm = new MyMath();	// 인스턴스 생성
        long value= mm.add(1L,2L);	// 참조변수 mm을 이용해 add 메서드 호출
									
	}
}
728x90