[Java] 1 클래스-2.클래스 선언

🐷Jinie (juniorDeveloper)·2020년 10월 24일
0

Java

목록 보기
2/12
post-thumbnail

1. 클래스 선언

  • 대표 이름을 하나 결정하고 이것을 클래스 이름으로 한다.
  • 식별자 작성 규칙에 따라서 만들어야함.
  • 클래스 이름을 정했다면, 클래스.java로 소스파일을 생성.
public class 클래스이름{

}
  • public class 키워드는 클래스를 선언할 때 사용, 반드시 소문자로 작성
  • 일반적으로 소스 파일당 하나의 클래스를 선언하지만, 두 개 이상의 클래스 선언도 가능.
  • 파일 이름과 동일한 이름의 클래스 선언에만 public 접근 제한자를 붙일 수 있음.

2. 객체 생성과 클래스 변수

new 클래스;
  • new는 클래스로부터 객체를 생성시키는 연산자.
  • new 연산자로 생성된 객체는 메모리 힙(heap) 영역에 생성
  • 메모리 내에서 생성된 객체의 위치를 모르면 객체를 사용할 수 없다.
  • 클래스의 용도 :
    라이브러리(API : Application Program Interface)용 : 다른 클래스에서 이용할 목적
    실행용 : main() 메소드를 제공하는 역할
public class Student{
	//라이브러리로서의 코드 (필드, 생성자, 메소드)
	
   	public static void main(string[] args) {
    //실행을 위한 코드
    	Student s1 = new Student();
        System.out.println("s1 변수가 Student 객체를 참조합니다.");
        
        Student s2 = new Student();
        System.out.println("s2 변수가 또다른 Student 객체를 참조합니다.");
    }
}
  • 위와 같이 라이브러리와 실행을 함께 작성할 수도 있지만,
    되도록 따로 작성하는 것을 권장.

3. 클래스의 구성 멤버

  • 필드 (Field), 생성자 (Constructor), 메소드 (Method) : 생략되거나 복수개 생성가능
  • 필드 : 객체의 데이터가 저장되는 곳
  • 생성자 : 객체 생성 시 초기화 역할
  • 메소드 : 객체의 동작에 해당하는 실행 블록

3-1. 필드 (Field)

  • 객체의 고유 데이터, 부품 객체, 상태 정보를 저장하는 곳 (속성)
  • 변수와 다른점 : 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재
    변수는 생성자와 메소드 내에서만 사용하고 생성자와 메소드가 실행 종료되면 자동 소멸.
  • 초기값을 지정하지 않는 경우, 자동으로 기본 초기값 설정
  • 클래스 중괄호{} 블록 어디서든 존재
  • 생성자 선언과 메소드 선언 앞과 뒤 어떤 곳에서도 필드 선언이 가능
  • 생성자와 메소드 중괄호 블록 내부에서는 선언 불가 --> 이건 로컬변수다.
  • 객체에 소속된 데이터
  • 필드를 사용한다는 것은 필드값을 읽고, 변경하는 작업
  • 클래스 외부에서 사용할 경우 우선적으로 클래스로부터 객체를 생성한 뒤 필드를 사용해야한다.

3-2. 생성자 (Constructor)

  • new로 호출되는 특별한 중괄호{} 블록.
  • 객체 생성시 초기화 담당.
  • 리턴타입이 없음
  • 객체를 사용할 준비를 한다. 또는 필드를 초기화한다.
  • 생성자 실행없이는 객체를 만들 수 없다.
  • 모든 클래스는 생성자가 반드시 존대, 하나 이상을 가질 수 있다.
  • 만약 생성자를 생략했다면, 컴파일러는 기본 생성자를 바이트 코드에 자동 추가시킨다.
  • 클래스가 public이면 기본 생성자에서도 public이 붙는다.
  • 클래스에 명시적으로 선언한 생성자가 한 개라도 있으면, 컴파일러는 기본 생성자를 추가하지 않는다.
  • 다양한 방법으로 객체룰 생성할 수 있도록 생성자 오버로딩(Overloading)을 제공한다.
    오버로딩이란, 매개 변수를 달리하는 생성자를 여러 개 선언하는 것. (여러개의 생성자)

3-3. 메소드 (Method)

  • 객체의 동작에 해당하는 중괄호 {}블록을 말한다.
  • 리턴값이 있을수도있고, 없을 수도 있다.
  • 리턴값이 없는 메소드는 리턴 타입에 void, 있는 타입은 리턴타입에 맞추어 작성
  • 이름은 자바 식별자 규칙에 맞게 작성
  • 매개 변수의 수를 모르는 경우 배열타입으로 선언
  • 리턴값이 없는 메소드의 경우 return;문을 사용하면 메소드 실행을 강제 종료시킨다.
  • 클래스의 내,외부 호출에 의해 실행된다.
  • 내부에서 호출할 경우 단순한 메소드 이름으로 호출
  • 외부에서 호출할 경우 클래스로 객체를 생성하고 참조변수를 이용해 메소드를 호출
    클래스 참조변수 = new 클래스(매개값..);
    참조변수.메소드(매개값 ...);
  • 같은 이름의 메소드를 여러 개 선언하는 것 : 메소드 오버로딩
  • 매개 변수의 타입과 개수, 순서가 똑같은 경우 매개 변수 이름만 바꾸는 것은 메소드 오버로딩 이라고 볼 수 없다.
  • 자바 가상 기계는 일차적으로 매개 변수 타입을 보지만, 자동타입 변환이 가능한지 검사하기도 한다.

4. 인스턴스 멤버와 this

  • 인스턴스 멤버란 객체를 생성한 후 사용할 수 있는 필드와 메소드를 말한다.
  • 인스턴스 필드, 인스턴스 메소드
  • 객체에 소속되어 객체 없이는 사용할 수 없다.
  • 객체 내부에서 인스턴스 멤버에 접근하기 위해 this를 사용할 수 있다.
  • 예를 들어, this.model은 자신이 가지고 있는 model필드 라는 뜻이다.
profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글