- 임의의 데이터형을 자유로이 조합하여 만들 수 있는 자료구조
- 클래스 본체에서는 다음과 같은 내용을 선언할 수 있다.
: 멤버 (필드, 메소드, 중첩 클래스, 중첩 인터페이스) / 클래스 초기화/ 인스턴스 초기화/ 생성자- 필드/ 메소드/ 생성자를 선언할 때 public/ private/ protected 을 지정할 수 있다.
- 메소드/ 생성자는 다중으로 정의 할 수 있다.
- final로 선언한 필드는 한 번만 값을 대입할 수 있다.
- 생성자는 새로 생성한 인스턴스의 초기화를 위해 사용된다.
❗️오버로드 : 메소드나 생성자를 정의할 때 형식은 다르지만 같은 이름을 붙이는 것.
- 공개 클래스 :
public class 다른 패키지에서 사용할 수 있는 공개클래스- final 클래스 :
클래스 접근제한자 final을 붙여 선언한 클래스로 서브 클래스를 가질 수 없다.
새로운 클래스를 상속할 수 없다.- 파생 클래스 :
클래스 A를 상위 클래스 (direct superclass)로 선언할 때 extends A를 추가해야한다. 이떼 선언한 클래스는 클래스 A의 직접 서브 클래스 (direct subclass)가 된다.
❗️ 클래스 선언에 extends가 없는 클래스의 상위 클래스는 'Object'
'Object'는 상위 클래스를 갖지 않는 유일한 클래스.- 추상 클래스 :
abstract를 붙여 클래스를 선언한다. 추상클래스형은 불완전해서 인스턴스를 만들 수 없다.- 중첩 클래스 :
클래스 또는 인터페이스 안에서 선언한 클래스.
- 멤버 클래스 (member class) :
선언이 다른클래수 똔ㄴ 인터페이스 선언에 둘러쌓인 클래스- 내부 클래스 (inner class) :
명시적, 암묵적으로 정적으로 선언되지 않은 중첩클래스이다.
정적초기화나 멤버 인터페이스 선언을 할 수 없다.- 지역 클래스 (local class) :
이름이 주어진 내부 클래스, 어떤 클래스의 멤버도 될 수 없다.
// 클래스 정의 class powerGet { // 속성(변수) 정의 String name; int power; int defense; // 생성자 정의 public powerGet(){ } // 메소드 정의 public void powerUp(){ power += 5; } public void powerDown(){ power -= 5; } public int getCurrentPower(){ return power; } }