클래스
클래스
클래스는 객체지향 프로그래밍에서 객체를 정의해주는 틀이라고 생각하면 된다. 즉, 객체의 속성과 기능을 하나로 묶어놓은 틀이다.
자바에서 클래스는 필드, 생성자, 메소드로 구성된다.
- 필드(멤버 변수) : 객체지향에서 속성에 해당하며 멤버 변수라고도 한다.
- 생성자 : 변수에 초기값을 대입하여 사용하듯 클래스에도 동일한 형식으로 생성해 초기화를 해주는 역할을 한다.
- 메소드 : 객체지향에서 기능(행위)에 해당하며, 클래스를 사용하여 메소드내에 정의된 행위를 실행하는 역할을 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//접근지정자 class(키워드) 클래스이름 { }
public class Person {
//필드, 멤버변수
private String name;
private String age;
//default 생성자, 생략이 가능하지만 파라미터를 가진 생성자가 있을시 반드시 명시해야한다.
public Person(){
}
//파라미터를 가진 생성자, 파라미터를 가지고 변수를 초기화한다.
public Person(String name, String age){
this.name = name;
this.age = age;
}
//메소드, 이름을 가져오는 행위를 한다.
public String getName(){
//메소드 내부 기능
return name;
}
}
Inner Class와 Nested Class
Nested Class란 클래스 안에 클래스를 의미한다.
Nested Class는 크게 non-static class(= inner class)와 static class(= static nested class)로 나뉜다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class OuterClass {
String outerField = "Outer field";
static String staticOuterField = "Static outer field";
...
class InnerClass {
System.out.println(outerField);
System.out.println(staticOuterField);
...
}
static class StaticNestedClass {
// 컴파일 에러 : static 필드가 아닌 필드는 참조할 수 없다.
// field outerField
// System.out.println(outerField);
System.out.println(outer.outerField);
System.out.println(staticOuterField);
...
}
}
- Inner Class
- inner class는 해당 클래스의 인스턴스와 연결되며 해당 개체의 메서드 및 필드에 직접 접근할 수 있다.
- inner class를 인스턴스화 하려면 먼저 외부 클래스를 인스턴스화 한후 외부 객체 내에 내부 객체를 생성할 수 있다.
1 2
OuterClass outerObject = 새로운 OuterClass(); OuterClass.InnerClass innerObject = outerObject.new InnerClass();
- inner class는 다시 local inner class(내부 클래스) 와 anonymous inner class(익명 클래스) 로 나뉜다.
- static class (= static nested class)
- static class는
- static 클래스 메서드와 마찬가지로 자신을 둘러싸는 클래스에 정의된 인스턴스 변수나 메서드를 직접 참조할 수 없다.
- 객체 참조를 통해서만 접근이 가능하다.
This post is licensed under CC BY 4.0 by the author.