목차
1. 메소드 호출
2. 정적 멤버와 static
3. final 필드와 상수
1. 메소드(Method)
1) 매개값이 배열인 메소드의 호출 → ★ComputerEx 참고
2) 클래스 내부에서 메소드 호출(메소드 안에서 다른 메소드 호출) → ★CalculatorEx1 참고
- 같은 클래스 내의 메소드를 호출할 때는 ‘메소드명()’으로 호출 가능
( ex. double sum = plus(x, y); )
3) 메소드 오버로딩(Overloading) → ★CalculatorEx2 참고
- 한 개의 클래스 안에 같은 이름의 메소드를 여러 개 선언하는 것
- 하나의 메소드 이름으로 다양한 매개값을 받기 위해 메소드 오버로딩
- 오버로딩의 조건: 매개변수의 타입, 개수, 순서가 달라야 함
2. 정적 멤버와 static
1) 정적(static)멤버
• 정적 멤버: 클래스에 고정된 필드와 메소드 - 정적 필드, 정적 메소드
- 공유를 목적으로 함
- 정적 멤버는 객체를 생성하지 않고 클래스로 바로 접근해 사용
- 클래스명.필드명 / 클래스명.메소드명() (ex. Math.pi, Math.random())
ex)
class StaticTest{
int a; // 인스턴스 멤버변수
static int b; // 정적 멤버변수(공유영역에 저장)
public static void check(){ // 정적 메소드
}
public static void main(String[] args){ // 정적 멤버변수는 클래스로 접근 가능
System.out.println(StaticTest.b); // 클래스명.필드명;
StaticTest.check(); // 클래스명.메소드명();
2) 정적 멤버 선언
- 필드 또는 메소드 선언할 때 static 키워드 붙임
3) 정적 멤버 사용
- 클래스 이름과 함께 도트(.) 연산자로 접근
4) 정적 멤버변수 vs. 인스턴스 멤버변수 → ★StaticTest01 참고
a=100 // 정적 멤버변수 (Heap영역에 저장되지 않고 공유영역에 저장됨
(공유영역)
s1 -------> b=200
s2 -------> b=20
(Stack영역) (Heap영역)
5) 정적 메소드와 정적 블록 작성시 주의할 점 → ★StaticTest2~4참고
- 객체가 없어도 실행 가능(단, private 접근제어자가 있으면 접근 불가)
- 블록 내부에 인스턴스 필드나 인스턴스 메소드 사용 불가(정적 메소드 안에는 정적 필드만 올 수 있음)
- 객체 자신의 참조인 this 사용 불가
6) Math 클래스의 정적 필드 & 정적 메소드 → ★MathEx 참고
- 객체 생성 없이 도트(.)로 접근 가능
- 필드: .E, .PI
- 메소드: .round(), .ceil(), .max(), .random() 등
7) 싱글톤(Singleton) → ★SingletonEx 참고
- 한 개의 클래스 안에 객체 생성을 한 번만 수행
3. final 필드와 상수(static final)
- 상수: 변하지 않는 값 ↔ 변수
① final이 멤버변수에 사용되는 경우 → ★FinalTest01 참고
→ 상수(값을 수정할 수 없다)
② final이 메소드에 사용되는 경우 → ★FinalTest02 참고
→ 메소드 오버라이딩을 허용하지 않는다는 의미
③ final이 클래스에 사용될 경우 → ★FinalTest03 참고
→ 상속을 허용하지 않는다는 의미
'Java' 카테고리의 다른 글
10일차: Java 문자열 관련 클래스 - 2021.06.28 (0) | 2021.06.28 |
---|---|
9일차: Java 패키지/접근 제어자/날짜시간 관련 클래스 - 2021.06.25 (0) | 2021.06.25 |
7일차: Java 클래스(필드, 생성자, 메소드)- 2021.06.23 (0) | 2021.06.23 |
6일차: Java 배열/String/객체 - 2021.06.22 (0) | 2021.06.23 |
5일차: Java 메소드호출/배열 - 2021.06.21 (0) | 2021.06.21 |