열렬히.뛰기

클래스 이용 1

Language > 프로그래밍 언어 > Java > 클래스 이용 1

클래스 다루기

규칙

클래스를 소스파일 안에 만들 때는 규칙이 존재한다.

  1. 소스파일의 파일명 = 클래스명
  2. 만약 클래스를 여러 개 넣고 싶으면?
    • 클래스 중 소스파일명과 같은 이름을 가진 것 앞에 public을 붙인다.
    • 즉, 소스파일 당 public class는 하나만 있어야 한다.
  3. 파일명은 대소문자를 구분한다.

선언자

java
public class test {
	
}

class test {
	
}

위와 같이 클래스 앞에 붙어서 특정한 역할을 하는 이를 선언자라고 한다.

선언자에는 다음과 같은 종류가 있다.

  • public, protected, abstract, etc…
  • 뒤에 나올 추상클래스, 인터페이스 등등에서 쓰인다.

멤버변수 다루기

클래스 안에 변수를 선언해보자.

그런데, 변수에도 그 위치에 따라 종류가 있다.

java
class t_class {
	static int number1;
	int number2;
	void method() {
		int x;			
	}
}
  1. 클래스 변수 : 클래스 안, 메소드 밖에 static을 붙이고 선언
    • 클래스가 메모리에 올라갈 때 초기화된다.
    • 인스턴스 선언을 안 하고도 쓸 수 있다.
  2. 인스턴스 변수 : 클래스 안, 메소드 밖에 선언
    • 인스턴스가 생성될 때 초기화 된다.
  3. 지역 변수 : 메소드 안에 선언
    • 메소드 안에서만 쓰인다.

예시를 보자.

java
public class Solution {
    public static void main(String[] args){
        t_class c1 = new t_class();
        t_class c2 = new t_class();
        c1.x1 = 10;
        System.out.println(c2.x1);
    }
}

여기서 c2.number1 의 값은 10이다.

클래스 변수이기 때문에 c1.number1을 바꾸면 자동적으로 바뀌기 때문!

메소드 만들기

그냥 함수 만드는 것과 크게 다르지는 않다.

다만 몇 가지 용어만 살펴보고 가자.

parameter와 argument

java
class t_class {
    int method(int y) { // parameter
        y = 1;
        return y;
    }
}

public class Solution {
    public static void main(String[] args){
        t_class c1 = new t_class();
        c1.method(5); // argument
    }
}

둘 다 괄호 안에 들어가는 값인 것은 동일.

다만, 의미적인 차이가 존재한다.

  • parameter(매개변수) ⇒ 클래스의 괄호 안에 들어가는 값.
  • argument(전달인자) ⇒ 인스턴스의 괄호 안에 들어가는 값.

static 메소드

  • 메소드도 static을 쓸 수 있다.
  • 그러나 이 경우 클래스 변수만 활용할 수 있다.
java
class Counter  {
    static int count = 0; // 클래스 변수
		int number = 3; // 인스턴스 변수
    void Counter() {
        count++;
        System.out.println(count);
    }
    static int getCount() {
        return count;
}

// getcount() : static 메소드
// count 외의 변수를 사용할 수 없다.