클래스에 고정된 필드와 메소드 - 정적필드(정적 멤버 변수), 정적 메소드(정적 멤버 메소드)
멤버의 사용 조건 : 클래스를 기반으로 객체를 생성 후 사용 // 클래스는 설계도. 설계도만으로는 부족. 객체 생성 후 사용해야
정적 멤버는 클래스에 소속된 멤버
클래스.필드;
클래스.메소드(매개값, ...);
클래스 이름과 함께 도트(.) 연산자로 접근
static은 클래스의 멤버다. 그렇기에 객체없이 클래스 이름으로 접근가능!
그렇지만 정적 멤버는 일반 객체 멤버를 사용 불가.
일반 멤버는 둘 다 사용 가능.
필드
메소드
일단 만들 때는 일반 멤버로 만들고 공용으로 사용해야 할 것 같은 건 정적 멤버로 바꿔주자!
정적 초기화 블록(정적 멤버 전용 생성자)
클래스가 메소드 영역으로 로딩될 때 자동으로 실행되는 블록
정적 필드의 복잡한 초기화 작업과 정적 메소드 호출 가능
클래스 내부에 여러 개가 선언되면 선언된 순서대로 실행
하나의 애플리케이션 내에서 단 하나의 객체만 생성한다.
외부에서 new 연산자로 생성자를 호출할 수 없도록 막기
클래스 자신의 타입으로 정적 필드 선언
외부에서 호출할 수 있는 정적 메소드인 getInstance()선언
최종적인 값을 갖고 있는 필으 = 값을 변경할 수 없는 필드
FINAL 필드의 딱 한번의 초기값 지정 방법
안 붙어 있는 것은 여러 번 수정 가능하다.
상수 = 정적 파이널 필드
-final 필드 : 객체 마다 가지는 불변의 인스턴스 필드
상수:
상수 이름은 전부 대문자로 작성
public(전체 허용)
< protected(다른 패키지에서 접근불가 자식 클래스에서는 접근 가능)
< default(패키지가 다르면 실행 불가. 다른 패키지에서 접근 불가)
< private(외부에서 접근 불가. 자신만 사용가능. 클래스 밖에서 접근불가.)
default -> 접근 제한자를 생략하면 자동으로 default로 인식된다
+public
-다른 개발자가 사용할 수 있도록 라이브러리로 만들 때 유용
클래스를 기능별로 묶어 그룹이름으 붙여 놓은 것
클래스 이름이 겹칠 수 있다. 그렇기 때문에 a 패키지, b 패키지 안의 클래스 이렇게 구별을 할 수 있다. 효율적으로 관리
System.out.println => System.out이거 패키지다.
미리 만들어온 패키지를 사용할 수 있도록 끌어요는 것.
import Java.util.Scanner; 자바밑에 유틸이라는 클래스안에 스캐너를 내가 쓰는 클래스에 넣겠다.
기존에 존재하는 패키지 및 클래스를 현재 파일에서 사용하게 해주는 명령어.
import + 클래스명
외부에서 주어진 값을 필드 값으로 수정
멤버변수에 저장할 때
필요할 경우 외부의 값을 유효성검사
setFieldName(타입변수)메소드
메개 변수 타입은 필드의 타입과 동일
프로그램에게 추가적인 정보를 제공하는 메타데이터 (JSP/SPRING에서 많이 사용됨)
컴파일러에게 코드 작성 문법 에러 체크하도록 정보제공
소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동 생성하게 정보 제공
상속 : 부모에게 상속받은 메서드 수정해서 사용시