일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Algorithm
- 자바알고리즘
- javaAlgorithm
- 음악
- 비전공자
- javascript
- 자바
- 정처기
- 비전공자 #자바공부 #혼자공부하는자바 #혼공자 #자바 #기록 #정리
- 정리
- 파이썬
- 데이터베이스
- 비전공자 #코딩공부 #혼자공부하는자바 #혼공자 #자바 #정리 #기록
- 정보처리기사실기
- 기록
- 수제비
- 혼자공부하는자바
- 개발자
- 비전공자 #코딩공부 #혼자공부하는자바 #혼공자 #자바 #기록 #정리
- java
- GIT
- 정처기실기
- 알고리즘
- python
- 혼공자
- 코딩테스트
- programmers
- github
- 정보처리기사
- 데이터베이스실무
- Today
- Total
This is a blog.
자바 기록 7일차 본문
혼자 공부하는 자바 / 저자 : 신용권
chapter06. 클래스 정리-3.
클래스-3
인스턴스 멤버와 정적 멤버
인스턴스 멤버와 this
인스턴스 멤버 : 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소드
=> 인스턴스 필드, 인스턴스 메소드
인스턴스 멤버 선언
ex) Car 클래스에 인스턴스 필드 gas와 인스턴스 메소드 setSpeed()를 선언
public class Car{
int gas;
void setSpeed(int speed){...}
}
this
객체 내부에서 인스턴스 멤버에 접근하기 위해 this를 사용.
주로 생성자와 메소드의 매개 변수 이름이 필드와 동일한 경우, 인스턴스 멤버인 필드임을 명시하고자 할 때 사용.
정적 멤버와 static
정적 멤버 : 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드.
=> 정적 필드, 정적 메소드.
정적 멤버 선언
필드와 메소드 선언 시 static 키워드를 붙인다.
public class 클래스 {
//정적 필드
static 타입 필드[=초기값]‘
//정적 메소드
static 리턴 타입 메소드( 매개변수선언,...){...}
}
정적 멤버 사용
클래스.필드;
클래스.메소드(매개값,...);
정적 메소드 선언 시 주의할 점
정적 메소드를 선언할 때는 이들 내부에 인스턴스 필드나 인스턴스 메소드를 사용할 수 없다.
객체 자신의 참조이 this 키워드도 사용이 불가능.
=> main() 메소드도 정적 메소드로 동일한 규칙이 적용.
싱글톤
단 하나의 객체만 만들도록 보장
싱글톤을 만들기 위해서는 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야 한다.
=> 생성자가 호출한 만큼 객체가 생성되기 때문.
=> 생성자 앞에 private를 붙여서 생성자를 외부에서 호출할 수 없도록 막는다.
=> 클래스 내부에서는 new 연산자로 생성자 호출이 가능.
=> 대신 외부에서 호출할 수 있는 정적 메소드인 getInstance()를 선언하고 정적 필드
에서 참조하고 있는 자신의 객체를 리턴해 준다.
클래스 변수1 = 클래스.getInstance();
클래스 변수2 = 클래스.getInstance():
final 필드와 상수
final 필드
초기값이 최정적인 값이 되어 수정할 수 없다는 것.
final 타입 필드[=초기값]
초기값을 줄 수 있는 방법은 두 가지밖에 없다.
1. 필드 선언시 초기값을 준다.
- 단순 값 선언시.
2. 생성자에게 초기값을 준다.
- 복잡한 초기화 코드가 필요하거나 객체 생성 시에 외부 데이터로 초기화해야 할 때.
상수
불변의 값을 저장하는 필드.
상수는 static이면서 final이어야 한다.
static fianl 필드는 객체마다 존재하지 않고 클래스에만 존재한다.
한 번 초기값이 저장되면 변경할 수 없다
static final 타입 상수 = 초기값;
상수는 모두 대문자로 작성하는 것이 관례.
서로 다른 단어가 혼합된 이름이라면 _(언더바)로 단어들을 연결한다.
패키지와 접근 제한자
패키지 선언.
package 상위패키지.하위패키지;
public class ClassName{...}
ex) package com.mycompany;
public class Car{...}
=> Car 클래스가 com.mycompany 패키지에 속해있다.
패키지 선언시 규칙
º 숫자로 시작해서 안된다.
º _,$를 제외한 특수 문자를 사용해서는 안 된다.
º JAVA로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용해서는 안된다.
º 모두 소문자로 작성하는 것이 관례.
클래스를 유일하게 만들어주는 식별자 역할.
클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스로 인식.
import문
import문 작성하는 방법
import 상위패키지.하위패키지.클래스이름;
import 상위패키지.하위패키지.*;
import문은 패키지 선언과 클래스 선언 사이에 작성.
import문은 개수 제한이 없고 얼마든지 추가 가능.
접근 제한자
클래스 및 인터페이스 그리고 이들이 가지고 있는 멤버의 접근을 제한하기 위해 사용.
접근제한자 종류
1. public 접근 제한자 : 외부 클래스가 자유롭게 사용할 수 있도록 한다.
2. protected 접근 제한자 : 같은 패키지 또는 자식 클래스에서 사용.
3. private 접근 제한자 : 외부에서 사용할 수 없도록 하낟.
4. (default) 접근 제한 :같은 패키지에 소속된 클래스에서만 사용.
: public을 생략했을 경우 default.
Getter와 Setter 메소드
메소드를 통해 필드를 변경하는 방법.
필드는 외부에서 접근할 수 없도록 막고 메소드는 공개해서 외부에서 메소드를 통해 필드에 접근하도록 유도.
필드 값을 외부로 리턴해주는 메소드 = Getter
외부에서 값을 받아 필드를 변경하는 메소드 = Setter