✅ 클래스 구성
- 클래스 선언
- class 키워드로 선언
- 클래스 접근 권한 부여 가능
- 필드와 메소드
- 필드(field): 객체 내에 값을 저장하는 멤버 변수
- 메소드(method): 함수이며 객체의 행동을 구현
- 필드의 접근 지정자
- 필드나 메소드 앞에 붙어 다른 클래스의 접근 허용을 표시
- 생성자
- 클래스의 이름과 동일한 특별한 메소드
- 객체가 생성될 때 자동으로 한 번 호출되는 메소드
- 개발자는 객체를 초기화하는데 필요한 코드 작성
✅ 생성자
- 클래스 이름과 동일한 메소드
- 생성자는 여러개 작성 가능(오버로딩)
- 생성자는 new를 통해 객체를 생성할 때, 객체당 한 번 호출
- 생성자는 리턴 타입을 지정할 수 없음
- 생성자의 목적은 객체 초기화
- 생성자는 객체가 생성될 때 반드시 호출되므로 하나 이상 선언되어야 함
- 개발자가 생성자를 작성하지 않은 경우 컴파일러가 자동으로 기본 생성자 삽입
public class Circle {
int radius;
String name;
public Circle() {}
public double getArea() {
return radius*radius*3.14;
}
public static void main(String[] args) {
Circle pizza = new Circle();
pizza.radius = 10;
pizza.name = "Pizza";
double area = pizza.getArea();
System.out.println(pizza.name + "의 면적은 " + area);
Circle donut = new Circle();
donut.radius = 2;
donut.name = "Donut";
area = donut.getArea();
System.out.println(donut.name + "의 면적은 " + area);
}
}
✅ 접근지정자
public
- 다른 모든 클래스에게 접근 허용
- 패지키에 관계 없이 모든 클래스에게 접근 허용
private
- 동일 클래스 내에만 접근 허용
- 상속 받은 서브 클래스에서 접근 불가
protected
- 같은 패키지 내의 다른 모든 클래스에게 접근 허용
- 상속 받은 서브 클래스는 다른 패키지에 있어도 접근 가능
디폴트(접근지정자 생략)
- package-private라고도 함
- 같은 패키지의 클래스에만 접근


✅ static의 활용
- 전역 변수와 전역 함수를 만들 때 활용
- 전역 변수나 전역 함수는 static으로 클래스에 작성
public class Math {
public static int abs(int a);
public static double cos(double a);
public static int max(int a, int b);
public static double random();
...
}
- 공유 멤버를 작성할 때
- static 필드나 메소드는 하나만 생성.
✅ final
final class FinalClass {
.....
}
class SubClass extends FinalClass {
.....
}
public class SuperClass {
protected final int finalMethod() { ... }
}
class SubClass extends SuperClass {
protected int finalMethod() { ... }
}
- final 필드
- 상수를 선언할 때 사용
- 선언 시에 초기 값을 지정해야 함
- 실행 중에 값을 변경할 수 없음
class SharedClass {
public static final double PI = 3.14;
}