티스토리 뷰
메서드 앞에 static이 붙어있으면 클래스메서드이고 아니면 인스턴스 메서드이다.
클래스 메서드도 클래스변수처럼, 객체를 생성하지 않고도 '클래스이름.메서드이름(매개변수)' 와 같은 식으로 호출이 가능하다.
반면에 인스턴스 메서드는 반드시 객체를 생성해야만 호출할 수 있다.
그렇다면 클래스를 정의할 때, 어느 경우에 static을 사용해서 클래스 메서드로 정의해야 하는 것일까?
클래스를 설계할 떄, 멤버변수 중 모든 인스턴스에 공통적으로 사용해야하는 것에 static을 붙인다.
클래스 변수는 인스턴스를 생성하지 않아도 사용할 수 있다.
클래스 메서드는 인스턴스 변수를 사용할 수 없다.
- 인스턴스 변수는 인스턴스가 반드시 존재해야만 사용할 수 있는데, 클래스메서드는 인스턴스 생성 없이 호출가능하므로 클래스 메서드가 호출되었을 때 인스턴스가 존재하지 않을 수도 있다. 그래서 클래스 메서드에서 인스턴스변수의 사용을 금지한다. 반면에 인스턴스변수나 인스턴스메서드에서는 static이 붙은 멤버들을 사용하는 것이 언제나 가능하다.메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다. - 메서드의 작업내용 중에서 인스턴스변수를 필요로 한다면, static을 붙일 수 없다. 반대로 인스턴스 변수를 필요로 하지 않는다면 static을 붙이자. 메서드 호출시간이 짧아지므로 성능이 향상된다.
** 클래스의 멤버변수 중 모든 인스턴스에 공통된 값을 유지해야하는 것이 있는지 살펴보고 있으면, static을 붙여준다.
** 작성한 메서드 중에서 인스턴스 변수나 인스턴스 메서드를 사용하지 않는 메서드에 static을 붙일 것을 고려한다.
'프로그래밍 > java' 카테고리의 다른 글
String (0) | 2018.10.30 |
---|---|
클래스 멤버와 인스턴스 멤버간의 참조와 호출 (0) | 2018.10.30 |
매개변수(parameter) 와 인자 (argument) (0) | 2018.10.30 |
인스턴스(instance) (0) | 2018.10.29 |
OverFolow의 발생 (0) | 2018.10.22 |
- Total
- Today
- Yesterday
- 신입사원
- 초보개발자
- ORACLE MERGE INTO USING DUAL
- 개발자
- 자바
- 신입사원개발자
- merge into 단일테이블
- C++
- ORACLE 단일테이블
- 단일쿼리문
- 파이썬
- 백준
- 알고리즘
- package.json
- merge into
- 인스턴스
- Java
- ORACLE MERGE INTO 같은테이블
- 백준알고리즘
- merge into using
- ORACLE MERGE INTO 동일테이블
- merge into using dual
- npm init
- jdk1.7 다운
- merge into 같은 테이블
- 개발자퇴사
- 신입개발자퇴사
- npm이란
- java1.7 다운
- jdk 이전버전 다운
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |