일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 금융권it
- autohotkey
- SQLD
- 첫알고리즘평가
- SQL데이터타입
- 금융권 it
- sql내장함수
- sql
- 오토핫키
- 멀티캠퍼스
- kb it's your life
- kb it's your life 6기
- kb취업교육
- kb 기자단
- prefixsum #C언어
- 전문가특강
- 취업교육
- kb it's your life 기자단
- 금융권 부트캠프
- 부트캠프
- 반별이벤트
- kbit교육
- 이차원배열
- 알고리즘
- KB국민은행
- kb네트워킹캠프
- kb 취업교육
- Today
- Total
지식보부상님의 공부 일지
[11] class 본문
JAVA에서 대부분의 변수와 literal은 object 입니다.
object는 class의 instance 이죠
하나의 .java 파일에서는 여러개의 class들을 포함할 수 있습니다.
하지만 하나의 class만 public class가 가능하죠!
또한 public class의 이름은 파일명과 동일해야 합니다.
public class는 프로그램의 처음 시작점인 main method를 포함합니다!
class 선언
그렇다면 class를 실제로 선언해볼까요?
class는 variable과 method를 가지고 있습니다.
다음과 같은 class를 봅시다!
1
2
3
4
5
6
7
8
9
|
class Employee{
String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
|
cs |
위는 Employee라는 class를 선언한거에요!
여기서 String name 은 class Employee의 멤버 변수(variable) 이라고 하고
public void setName과 public String getName은 method라고 합니다!
실제 main program에서의 사용해볼까요??
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class Employee{
String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
public class Lecture{
public static void main(String[] args){
Employee e = new Employee();
e.setName("darong");
System.out.println(e.getName());
}
}
|
cs |
라고 하면 출력결과는!
다음과 같겠네요!
Instance Variable
Instance variable 은 class에서 선언된 static 이 아닌 변수들을 의미해요!
위의 예시인 class Employee를 다시보면
1
2
3
4
5
6
7
8
9
|
class Employee{
String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
|
cs |
String name가 바로 instance variable입니다!
즉 instance variable은 object instance에 속해있는 변수입니다.
access modifier은 누가 해당 변수에 접근할 수 있는지를 결정지어줍니다!
위의 예시를 계속해서 사용할게요!
String name 이라고 하면, 같은 package 내의 class들에서 visible합니다(접근이 가능합니다)!
public String name 이라고 하면 모든 class에서 접근이 가능하다는 뜻입니다.
protected Strnig name 이라고 하면 subclass와 같은 package내의 class들에서만 접근이 가능합니다.
마지막으로
private String name 이라고 하면 해당하는 그 class 내에서만 접근이 가능합니다!
access modifier는 method 정의할 때도 적용 가능합니다.
Method
1
2
3
4
5
6
7
8
9
|
class Employee{
String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
|
cs |
Method는 위의 예시에서 public void setName과 public String getName입니다.
Method를 정의할 때
가장 앞에는 access modifier을 적어줍니다! (앞에서 봤죠? 안쓰거나, public, protected, private 중 하나요!)
그 다음에는 return type을 적어줍니다! 만약 리턴 타입이 없다면 void 라고 적어주는 거에요!
위의 setName은 리턴할 것이 없으니 void 라고 설정하였고,
getName은 this.name을 리턴하니 String으로 설정했습니다!
그 다음에는 method의 이름을 적어주는데
일반적으로 소문자로 시작하고 두번째 단어부터 대문자로 적어줍니다!
위의 setName과 getName 처럼요!
마지막으로 argument들을 적어줍니다!
argument를 적어줄 때는 argument의 class(공백)argument의 이름 순으로 적어줍니다!
여러개인 경우에는 콤마(,)로 구분하구요!
setName에서는 String name 이라는 argument 가 있었고,
getName에는 argument가 없네요!
7번째 줄에 this.name 이라는 말이 있는데
this는 object의 method가 불렸을 때 object 자체를 참조할 때 사용하는 것으로
method내에서는 this로 참조 가능합니다.
만약 모호하지 않은 경우는 this를 생략할 수 있습니다!
다음과 같은 예시를 볼까요?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class Employee{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
public class Lecture{
public static void main(String[] args){
Employee e = new Employee();
e.setName("darong");
System.out.println(e.getName());
}
}
|
cs |
앞의 예시에서는 String name 에 아무것도 적어주지 않았는데
이번에는 private으로 바꿔주었어요!
그렇다면, line 14에 e.name = "darong"; 이라고 써도 괜찮을까요??
아니겠죠!
name이라는 instance variable은 private이기 때문에
Employee라는 class내에서만 visible 합니다!
Object 생성하기
object를 생성하려면 "new" 라는 키워드를 이용합니다!
object가 생성되면 class의 constructor가 불립니다.
만약 class내에 constructor가 없으면 default constructor가 불립니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class Employee{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
public class Lecture{
public static void main(String[] args){
Employee e = new Employee();
e.setName("darong");
System.out.println(e.getName());
}
}
|
cs |
계속 보고 있는 예시죠??
Employee라는 class에는 constructor가 없기 때문에
default constructor가 불렸습니다.
constructor를 만들어 볼까요?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
class Employee{
private String name;
public Employee(){
this.name = "NoName";
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
public class Lecture{
public static void main(String[] args){
Employee e = new Employee();
e.setName("darong");
System.out.println(e.getName());
}
}
|
cs |
위와 같이 constructor는 class의 이름과 같은 이름을 가져야 하고,
리턴 타입은 없어야 합니다.
하지만 여러개의 argument를 가질 수 있습니다!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class Employee{
private String name;
public Employee(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
public class Lecture{
public static void main(String[] args){
Employee e = new Employee("darong");
System.out.println(e.getName());
}
}
|
cs |
다음과 같이 constructor가 String name이라는 argument를 가질 수 있습니다
'JAVA를 자바' 카테고리의 다른 글
[10] System.arraycopy (1) | 2020.12.29 |
---|---|
[9] 배열 (array) 선언, 초기값 (1) | 2020.12.29 |
[8] break와 continue (0) | 2020.12.29 |
[7] switch 문 (1) | 2020.12.29 |
[6] do~while loop (0) | 2020.12.29 |