자바 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
Author And Source
이 문제에 관하여(자바 5-2주차. 클래스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@msung99/자바-5-2주차.-클래스저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)