hyeonga_code
Java_43_지정 예약어 본문
-------------------- 클래스 선언 ----------------------
- 지정 예약어
- class 명
- extends 상위 클래스
- implements 상위 인터페이스
-------------------------------------------------------------------------------------------------------------
package '패키지 명';
import '패키지 명';
+ () 생략 가능
('접근 제한자') ('지정 예약어') class '클래스 명' (extends '상위 클래스') (implements '상위 인터페이스'){
'접근 제한자' '지정 예약어' '자료형' '멤버 필드(변수명)';
// 변수(선언부)
'접근 제한자' '지정 예약어' '반환형' '멤버 메소드(매개변수..)'{
// 기능 부여(메소드)
}
'접근 제한자' '생성자'() {}
'중첩 클래스(내부 클래스)'
}
------------------------------------------------------------------------------------------------------------ -
class '클래스 명' {
'자료형' '멤버 필드';
'반환형' '멤버 메소드'('매개변수',...){
return '반환값';
}
}
4. 지정 예약어
- class_클래스
- static
- 중첩 클래스
- fanal
- 상속에서 제외할 클래스
- abstract
- 추상화 클래스
- field_필드
- static
- 정적, 공용, 공통적인
- 기본적 메소드 활용
|-----상수/메소드-----|-------힙-------|-------스택-------|
|-----상수/메소드-----|-n/m/i----------|--aaa-------------|
|-----상수/메소드-----|----------n/m/i-|----------bbb-----|
- static 메소드 활용
|-----i--------------|-n/m-----------|--aaa-----------|
|-----i--------------|-------n/m-----|--------bbb-----|
- i 가 고정이 되어 같이 움직임
- 특정 객체의 것이 아니게 됨(클래스의 것)
- 사용시, this 대신 클래스 이름으로 접근해야 함
- 메모리가 되는 시기
- static 멤버 : 프로그램 시작 시(객체와 상관 없음)
- 일반 객체 멤버 : 객체 생성 시
- 초기값을 따로 부여하여 사용할 수 있음
- 객체를 생성하지 않아도 불러와서 사용할 수 있음
'클래스 이름'.'static 멤버 이름'
=====
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
import java.util.*;
class Bank {
private String name;
private double money;
// private float iyul;
private static float iyul;
// > 이율이 한 번에 수정됨
public Bank(String name, double money, float iyul) {
this.name = name;
this.money = money;
// this.iyul = iyul;
Bank.iyul = iyul;
}
public void setIyul(float iyul) {
// 이율 변경 가능
// this.iyul = iyul;
Bank.iyul = iyul;
}
public void disp() {
// 출력
System.out.println(name + "'s money : " + money + " | iyul : " + iyul*100 + "%%");
}
}
public class same {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Bank aaa = new Bank("aaa", 1000.0, 0.05f);
aaa.disp();
Bank bbb = new Bank("bbb", 1000.0, 0.04f);
aaa.setIyul(0.04f);
// aaa의 이율을 수정해주어야 함
aaa.disp();
bbb.disp();
Bank ccc = new Bank("ccc", 1000.0, 0.03f);
aaa.disp();
bbb.disp();
ccc.disp();
}
}
|
=====
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
32
33
34
35
36
37
38
39
40
|
import java.util.*;
class A08 {
private int a;
private static int b;
static {
// 객체 생성과 상관 없이 프로그램 내에서 한 번 실행됨
System.out.println("using static");
}
{
// java에만 있음 : 객체를 생성할 때 생성자보다 먼저 실행되는 구문
// 클래스 내에 위치와 상관없이 모든 생성자보다 먼저 실행됨
// 그러나 잘 사용되고 있지는 않는다.
System.out.println("using public");
}
public A08() {
System.out.println("using default");
}
public A08(int a, int b) {
System.out.println("using A08(int a, int b)");
}
}
public class same {
public static void main(String[] args) {
A08 ap = new A08();
A08 bp = new A08(10, 20);
}
}
/*
-----------------------------------------------------------
1) using static // 한 번만 실행됨
2) using public // 일반 구문 실행 전에 출력
3) using default // 일반 구문 실행 후 출력
4) using public // 일반 구문 실행 전에 출력
5) using A08(int a, int b) // 일반 구문 실행 후 출력
-----------------------------------------------------------
2), 3) : ap
4), 5) : bp
*/
|
- final
- 상속에서 제외되는 메소드
- 객체를 생성할 때 한 번 초기값을 부여한 후 변경할 수 없음
- 다른 곳에서 다시 선언할 경우 오류
'Unresolved compilation problem: The final field A08.a cannot be assigned'
- 클래스에서 초기값을 선언하지 않은 경우
- 처음 사용할 때 값을 지정하고, this로 불러오면서 사용
- static final
- 상수 선언
public static final
= public final static
- static 멤버이므로 클래스 이름으로 접근
- 접근 제한자가 public이므로 어디서든 접근이 가능(import)
- java.lang에 포함 된 것은 import 생략 가능
=====
1
2
3
4
5
6
7
8
9
|
import java.util.*;
public class same {
public static void main(String[] args) {
System.out.println("circle width : " + 5*5*Math.PI);
// public static final double PI 3.141592653589793
// >>> final 필드이므로 변경할 수 없음
}
}
|
- transient
- 네트워크나 I.O에서 필드값을 전송하지 않는 경우
- method_메소드
- static
- 필드의 static과 동일
- 안에서는 static 멤버만 호출 가능
- static 없어도 되는 이유 : main
- static이 있는 메소드 안에서는 static 안에 존재하는 객체만을 사용할 수 있음
- static 은 객체와 상관없이 메모리가 올라가는 것이므로 객체를 만들지 않은 생성자는 main 클래스 안의 생성자를 의미함
- static 없는 경우에는 클래스에 존재하여 객체를 생성했을 때
=====
1
2
|
public static double random(){ ... }
// >>> Math.random() 사용 가능
|
=====
1
2
3
|
public static void main(String[] args) { ... }
// JVM이 제일 먼저 찾아 실행하는 것이므로 static 필수
// 어디서든 찾을 수 있어야 하므로 public 필수
|
- 'Run Configuration'
- 'Program arguments' : 값
- 공백으로 값을 구분
=====
1
2
3
4
5
6
7
8
9
10
|
import java.util.*;
public class same {
public static void main(String[] args) {
for(int i=0; i<args.length; ++i) {
System.out.println(args[i]);
}
}
}
// 'Program arguments' 에 입력한 값이 출력됨
|
cs |
'Java' 카테고리의 다른 글
Java_45_클래스_중첩 클래스 (0) | 2023.10.08 |
---|---|
Java_44_클래스_지정 예약어 (0) | 2023.10.07 |
Java_42_캡슐화 (0) | 2023.10.05 |
Java_41_접근 제한자_public < protected < default < private (0) | 2023.10.02 |
Java_40_this (0) | 2023.10.01 |