[JAVA] 클래스의 사용
클래스의 사용
- 메소드 : 클래스 정의 내부에 존재. 헤더와 몸체로 구성됨
[접근 제어자] 반환형 메소드이름([자료형인자[, 자료형인자...]]) [throw 예외이름] { 문장 }
- 생성자
- 객체가 생성될 때 자동으로 실행되는 메소드
- 객체의 필드값을 초기화하거나 메모리 할당 등의 작업
- 객체 생성 방법은 new 클래스이름(인자). 객체를 생성할때 자동 호출 됨
- 생성자 정의
- 생성자 이름은 클래스 이름과 같음
- 반환형을 선언하지 않음
- 여러 생성자를 정의할 수 있음 (생성자 오버로딩)
- 접근 제어자는 보통 public
- 생성자 이름은 클래스 이름과 같음
- 객체가 생성될 때 자동으로 실행되는 메소드
- 기본 생성자
- 인자가 없는 생성자. 디폴트 생성자
- 클래스 정의에 한개의 생성자 정의도 없으면 컴파일러가 다음과 같은 것을 자동으로 만들어 줌
- 생성자 몸체의 첫 줄에 부모 생성자의 명시적 호출이 없다면 super();가 자동으로 들어감
- 따라서 부모 클래스에서 기본 생성자의 존재를 확인해야 함
- 인자가 없는 생성자. 디폴트 생성자
- 클래스의 사용
- 변수를 선언하고 객체를 생성
- extends : 상속을 위해 사용
- 변수를 선언하고 객체를 생성
- 객체의 사용
- 객체 변수와 점(.) 연산자를 사용하여 멤버에게 접근
- 객체가 소유하는 데이터(인스턴스 변수)를 읽거나 쓰고 메소드를 호출
- 객체 변수와 점(.) 연산자를 사용하여 멤버에게 접근
- static 필드
- 정적 필드 or 클래스 변수
- 클래스의 모든 객체가 공유하는 데이터
- 객체의 생성이 없어도 항상 사용 가능
- 어떤 객체도 값을 변경할 수 있음
- 사용 방법은 클래스이름.정적필드 (객체변수.정적필드도 가능은하나 권장하지않음)
- 정적 필드 or 클래스 변수
- static 메소드
- 정적 메소드 or 클래스 메소드
- 객체와 무관하게 호출되고 실행됨
- 메소드 몸체에서 this를 사용할 수 없음
- static 필드와 인자를 가지고 작업함
- 사용 방법은 클래스이름.정적메소드(인자) (객체변수.정적메소드도 가능은하나 권장하지않음)
- 정적 메소드 or 클래스 메소드
- final 필드
- 상수 데이터를 선언
- 선언할 때 초기값을 지정해야 함
- 자주 static과 함께 사용됨
- 상수 데이터를 선언
- final 메소드
- 자식 클래스로 상속은 가능하나 재정의 할 수 없는 메소드
- 자식 클래스로 상속은 가능하나 재정의 할 수 없는 메소드
- 객체 초기화
- 객체를 생성할 때, 데이터 필드에 초기값을 지정하는 것
- 클래스 변수는 프로그램 시작 시에 자동 초기화 됨
- 데이터 필드는 자동으로 초기값이 주어질 수 있음
- 객체를 생성할 때, 데이터 필드에 초기값을 지정하는 것
- 메소드 오버로딩
- 인자의 개수나 인자의 자료형이 다르면 같은 이름의 메소드를 한 클래스에서 여러개 정의할 수 있음
- 인자의 개수와 자료형이 정확히 일치하면 중복 정의 불가
- 메소드를 호출할 때, 가장 가까운 매개변수 목록을 가진 메소드가 호출 됨
- 인자의 개수나 인자의 자료형이 다르면 같은 이름의 메소드를 한 클래스에서 여러개 정의할 수 있음