자바 5-2주차. 클래스

static 멤버

static 멤버: 객체 내부에 존재하지 않고 메소드영역에 생성

  • 객체를 생성하지 않고도 존재하며 클래스 이름으로 바로 사용 가능하다

클래스객체 : 참조변수는 스택에 생성, 실제 객체는 힙에 생성

Calcular.pi 이렇게  static 멤버사용

static 블록


static 메소드

  • 블록 내부에 해당 클래스의 인스턴스 필드나 인스턴스 메소드 사용 불가

  • 일반 인스턴스 필드와 메소드는 반드시 객체를 만들어야지 사용가능.

  • 당연히 객체 자신의 참조인 this 도 사용불가능


  • non-static = 인스턴스 멤버

    • 객체마다 독립적으로 별도로 존재함
    • 객체 생성 후에 사용 가능함
  • static

    • 해당 클래스로부터 생성된 모든 객체가 공유하는 놈
    • 클래스당 하나만 생성됨
    • 클래스 멤버라고도 부름
    • 객체 만들지 않고도 사용가능

=> static 메소드는 non-static 멤버를 사용할 수 없다.
반대로 ,non-stati 메소드는 static 멤버 사용 가능


static vs 전역

static 이 전역변수 처럼 보일 수 있지만 다른 것이다.

지역변수 : 범위가 제한적 / 생명력이 한시적
전역변수 : 범위에 제한x / 생명력이 영생임(계속 살아있음)

  • 전역변수는 가급적 사용하지 말것(어디에서나 접근할 수 있기때문) 그러나 값이 유지된다는 점은 큰 장점임.

  • staic : 전역변수 처럼 값을 유지할수 있는 장점만 가져온 것, 그리고 로컬에서만 안전하게 접근 가능한 특성

  • 모든 필드와 메소드가 public static 으로 선언 :


final

  • final 필드 : 말그대로 최종, 끝. 가져자 사용하는 것은 가능해도 값을 변경하는 것은 불가능 (상수와 같은 개념)

    • 예외적으로 생성자 내에서 초기화 1번은 가능하다.
    • 그 뒤로 절대 값을 변경하지 못함!!
  • static final : 객체 내부에 존재하지 않고, 모든 객체가 공유해서 사용하는 고유한 값(변경 불가능하며 공유 가능한 값이다)

public class Person{
  final String nation = "Korea";
  
  Person()
  {
 
}

패키지(package)

  • 클래스를 기능별로 묶어서 그룹 이름을 붙여 놓은 것 (어떤 한 기능 단위의 분류)

  • 폴더와 비슷한 개념. 하나의 목적을 가진 애들을 폴더에 넣듯이.

  • 컴파일러가 클래스를 인식시 => 상위패키지.하위패키지.클래스
    이렇게 패키지 경로까지 쭉 붙여줘서 상세하게 인식한다
    (그냥 클래스 이름만 붙여주면 중복되는 이름을 가진 클래스가 등장해서 충돌이 발생할 수도 있기 때문에 이렇게 인식)


import문

  • 다른 패키지에 있는 클래스를 내가 가져다 사용하고 싶을 때 사용

  • 별표 * 는 이 패키지에 있는 모든 클래스를 가져다사용하곘다는 의미로, 이름만 가져다가 쓸수있다.


접근 제한자(Access Modifier)

  • 종류:

    • public(어디에서나 접근 가능. 다른 패키지에서도 사용가능)
    • protected(상속 관계에서만 public 처럼 작동하는 애)
    • default(또는 package private 이라고 부름) : 내 클래스 안에서만 사용가능 (아무것도 안붙이면 default. 다른 클래스더라도 같은 패키지 안에 있으면 사용가능)
    • private
  • 클래스에 붙일수있는 제한자는 public, default 2개이다. proeteced 와 private는 못붙임

getter, setter

좋은 웹페이지 즐겨찾기