<7일차리뷰>
1. 클래스 구성요소
- 인스턴스 변수:
데이터 저장용. 객체 속성값 저장 (ex) Cat 클래스의 이름, 나이 )
일반적으로 private 로 지정한다. ( 은닉화(캡슐화, encapsulation) )
private 로 지정하여 직접접근이 불가능함.
- 생성자( Constructor ):
인스턴스 변수 초기화용.
반드시 클래스명으로 사용
오버로딩(overloading) 생성자가 가능
( 단, 인자리스트( 갯수, 타입, 순서 )는 반드시 다르다. )
반드시 호출해야 실행이 된다.
호출하는 방법은 2가지 ( 외부: new 생성자( ); / 내부: this( ) )
- 메서드( Method ):
기능처리. 일반적으로 인스턴스변수를 관리하는 기능임.
( 변수값 수정, 조회, 유효성검사,... )
역할에 따른 2가지 종류:
값 설정용은 setter 메서드 사용.
값 조회용은 getter 메서드 사용.
파라미터 및 리턴값 존재여부에 따른 4가지 종류:
파라미터x 리턴값x , 파라미터 o 리턴값 x, 파라미터 x 리턴값 o,
파라미터 o 리턴값 o
반드시 호출해야 실행이 된다. 실행된후에 반드시 호출한 곳으로
돌아온다. ( stack 메모리에 함수정보 저장 ; stack 에서 저장되는데 어디 method 에 있는지도 저장한다. )
오버로딩(overloading) 메서드가 가능
(단, 인자리스트는 반드시 다르다.)
2. Call by value vs Call by value reference
개념: 메서드 호출시 값을 전달할 수 있는데 전달되는 방식은
값이 전달된다.
값의 종류:
기본형인 경우에는 call by value 라고 한다. ( 실제값 전달 )
=> 전달받은 메서드안에 값을 변경하면 원본값은 영향받지 않음.
참조형인 경우에는 call by value reference 라고 한다. ( 주소값 전달 )
=> 전달받은 메서드안에 값을 변경하면 원본값도 영향을 받는다.
ex) 배열 또는 클래스 전달하고 전달받은 메서드에서 값을 변경하면
원본배열 또는 클래스( Cat, 컬렉션 )의 변수값이 수정이 된다.
3. package 와 import
1) package
- 용도: 클래스 파일 관리목적( 윈도우의 폴더와 비슷 )
- 문법:
package 패키지명;
package 패키지명.패키지명1;
- 특징:
단한번만 지정 가능.
유일한 값으로 지정. ( 일반적으로 도메인으로 지정함 )
패키지 컴파일 필요: javac -d Hello.java
패키지 실행시 패키지명을 명시적으로 지정해야 된다.
: java com.ssginc.Hello
java API 도 패키지로 제공된다. ( java.lang, ...javax... )
사용자지정 패키지명은 java API 패키지명은 사용불가.
2) import
- 용도: 패키지가 다른 클래스는 접근이 불가능한데 가능하도록
경로를 알려주는 역할.
- 문법:
import 패키지명.패키지명1.클래스명; // 권장
import 패키지명.패키지명1.*; // 권장안함
이클립스에서 ctrl + shift + o(영문자) 하면 자동으로 import 해줌.
- 특징:
자동으로 import 되는 API 패키지는 java.lang 이다.
역으로 java.lang 을 제외한 나머지는 무조건 import 해야 된다.
4. static 키워드
- 특징: new(객체생성)와는 무관하고 프로그램실행할 때 정해짐(정적)
- 사용:
클래스: 중첩클래스에서만 사용가능. ( 외부클래스는 사용불가 )
변수: static 변수(클래스변수), 프로그램 실행시 method area에 생성.
단 한번만 생성 되고 new 한 여러 인스턴스들이 공유가능하다.
메서드: static 메서드. 프로그램 실행시 method area 에 생성됨.
목적은 new 없이 메서드 사용할수 있다.
(ex) Integer.parseInt("10") )
주의할점은 new에 의한 인스턴스와 무관하기 때문에
인스턴스변수, this 키워드를 사용할 수 없다.
- 접근방법:
클래스명.변수( );
클래스명.메서드( );
5. static 블럭
- 용도:
프로그램에서 특정 작업을 초기화(선처리)가 필요한 경우이다.
초기화는 생성자 또는 메서드에서도 가능하다.
그런데 static 블럭은 추가작업이 필요없음.
- 문법:
static {
// 초기화작업
}
'Programming > JAVA(eclipse)' 카테고리의 다른 글
java 8일차 _02. 상속 (0) | 2024.03.19 |
---|---|
java 8일차 _01. 클래스 관계 (0) | 2024.03.19 |
java 7일차_ 03. import & package (+ UML ) (0) | 2024.03.18 |
java 7일차 _02.static (0) | 2024.03.18 |
java 7일차 _01.메서드 (0) | 2024.03.18 |