본문 바로가기
JAVA

JAVA 클래스

by shur_ 2022. 8. 3.
  • 객체 지향 프로그래밍에서 클래스는 동일한 객체를 생산하는 틀에 해당함
  • 클래스라는 틀로 만든 객체를 해당 클래스의 인스턴스라고함 ( ex. 클래스는 붕어빵 틀 , 붕어빵은 인스턴스 )
  • 객체가 필드와 메서드로 구성되므로 클래스도 필드와 메서드를 정의해야함

  • 하나의 소스 파일에 최대 하나의 클래스만 public 으로 선언될 수 있음. 소스 파일은 public을 사용한 클래스 이름과 동일해야함
  • 클래스 파일은 .java 가 됨. java 파일을 컴파일하면 .class 파일을 생성함. 하나의 파일에 클래스가 둘 이상 있다면 하나만 public으로 선언할 수 있음. 두개 이상의 클래스가 있는 클래스를 컴파일하면 각 클래스 이름으로 .class 파일이 생김.

  • 정적 변수는 클래스 로더가 클래스를 메서드 영역에 적재할 때 생성하므로, 객체 생성 전에도 접근할 수 있다. 마찬가지로 정적 메서드도 정적 변수처럼 객체를 생성하기 전에 호출할 수 있다. static의 포인트
  • static 메서드는 객체와 관련된 인스턴스 변수를 사용할 수 없고 인스턴스 메서드를 호출할 수 없다. (인스턴스 변수,메서드가 필요하다면 먼저 객체를 생성한 후 사용해야함)
  • static 메서드는 객체 자신을 가리키는 this 키워드를 사용할 수 없다.

 

  • 정적 멤버는 객체를 생성하기 전이라도 사용할 수 있기 때문에 일반적으로 객체 이름 대신에 클래스 이름과 연결해서 사용한다. 물론 객체를 생성한 후에 객체 이름과 연결할 수 있지만 바람직하지 않다. (ex. 클래스이름.정적변수이름 / 클래스이름.정적메서드이름() )
  • 정적 변수의 대표적인 예로는 상수가 있다. 상수는 변경되지 않는 변수이기 때문에 final 키워드로 지정하지만 final로만 지정하면 객체마다 자신의 기억 공간을 가진다. 상수는 값이 변경되지 않으므로 객체마다 할당할 필요가 없으므로 공유해도 돼서 static final로 지정해서 선언한다.
  • 우리가 자주보는 main() 함수도 정적 메서드이다. 처음에는 이해하지 못했던 public 'static' void main(String[] args) 가 이제는 눈에 들어올거다. JVM은 객체를 생성하지 않고도 main() 메서드를 호출할 수 있어야 하므로 main() 메서드도 정적 메서드가 되어야한다.
class Util {
	static int fiveTimes(int i) {
    	return i*5;
        }
}

public class UtilDemo {
	public static void main(String[] args) {
    	System.out.println(Util.fiveTimes(3)); // static 정적메서드 호출 클래스이름.메서드이름()
        }
}

'JAVA' 카테고리의 다른 글

JAVA StringTokenizer  (0) 2022.11.22
int와 Integer  (0) 2022.11.20
인터페이스  (0) 2022.09.04
JAVA 프로그램 구조  (0) 2022.07.28
JAVA 시작하기  (0) 2022.07.27

댓글