자바(Java) - 클래스와 객체
클래스와 객체(Class & Object)
-
객체(Object): 실생활에서 우리가 인식할 수 있는 사물
-
클래스(Class): 객체를 생성하는 틀 또는 설계도와 같은 개념
인스턴스(Instance)
- 클래스의 인스턴스화: 클래스로부터 객체를 선언하는 과정
- 인스턴스(Instance): 선언된 해당 클래스 타입의 객체
- 메모리에 할당된 객체를 의미
클래스(Class)
-
객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성
- 필드(field): 클래스에 포함된 변수(variable)를 의미
- 메소드(method): 어떠한 특정 작업을 수행하기 위한 명령문의 집합
1
2
3
4
5
6
7
8
9
public class 클래스명{
//필드(객체 변수)
//생성자
//메소드
//+접근제어자
//+static
}
클래스명 객체명 = new 클래스명();
메소드(Method)
- 어떠한 특정 작업을 수행하기 위한 명령문의 집합
1
2
3
접근제어자 반환타입 메소드이름(매개변수목록) { // 선언부
// 구현부
}
생성자(Constructor)
- 생성자 규칙: 클래스명과 생성자명이 같아야하며 반환타입이 없다.
1
2
3
public class 클래스명{
생성자명(){}
}
this,this()
this : 객체 자신을 의미
this() : 생성자를 의미
1
2
3
4
5
6
7
8
9
10
class ThisExample{
//필드
String name;
String type;
//생성자
public Car2(String name,String type) {
this.name = name; //this 는 객체 자신을 의미
this.type = type;
}
오버로딩(Overloading)
-
하나의 클래스 안에서 같은 이름의 메소드를 여러개 정의하는 것을 의미
-
메소드의 이름이 같아야 하며 매개변수의 개수나 타입이 달라야 한다.
1
2
3
void display(int num1)
void display(int num1, int num2) // 매개변수의 개수가 다르다.
void display(int num1, double num2) // 매개변수의 타입이 다르다.
접근 제어자(Access Modifier)
- 클래스의 변수나 메소드에 접근을 제한하는 기능을 제공
접근제어자의 종류
- private : 해당 클래스에서만 접근 가능
- default : 해당 패키지 내에서만 접근 가능
- protected : 해당 패키지 및 상속 받은 클래스에서 접근 가능
- public : 어디서든 접근 가능
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
class StaticExample {
// 스태틱 변수
static String name = "abc";
int number;
// 생성자
public StaticExample() {
}
public StaticExample(String name, int number) {
this.name = name;
this.number = number;
}
// 출력 메소드
void printInfo() {
System.out.println("name : " + name);
System.out.println("number : " + number);
}
// 스태틱 메소드
static void getName() {
System.out.println("name : " + name);
}
}
public class Main {
public static void main(String[] args) {
StaticExample st = new StaticExample();
st.number = 1; //static으로 지정하지 않은 변수는 객체를 생성해야 사용할 수 있다.
//Static 변수 및 메소드는 객체를 생성하지 않아도 호출이 가능
StaticExample.name = "Chulsoo";
StaticExample.getName();
//printInfo 메소드를 출력한다면 name이 static 변수기때문에 st1,st2,st3의 이름은 모두 마지막 설정인 '박효신'으로 출력된다.
StaticExample st1 = new StaticExample("김범수", 1);
StaticExample st2 = new StaticExample("나얼", 2);
StaticExample st3 = new StaticExample("박효신", 3);
st1.printInfo();
st2.printInfo();
st3.printInfo();
}
}
댓글남기기