차곡차곡

#4장 클래스와 객체 본문

Language/JAVA

#4장 클래스와 객체

sohy 2021. 6. 28. 16:48

클래스 구성

클래스 접근 권한, public : 다른 모든 클래스들이 이 클래스에 대해 사용 혹은 접근이 가능함을 뜻한다.

+The public type [클래스이름] must be defined in its own file

public을 쓸 수 있는 클래스는 파일명과 일치하는 클래스 뿐이다. 그 외의 클래스에서는 사용시 에러가 난다. 파일명과 일치하는 클래스 파일 내부에 다른 클래스를 포함하고 있을 때는 public을 사용 해도 무관하다.)

필드(field) : 값을 저장할 멤버 변수 선언

생성자 : 클래스의 이름과 동일한 메소드를 생성자라고 부른다. 클래스의 객체가 생성될 때만 호출되는 메소드이다.

메소드 : 메소드는 실행 가능한 함수이며 객체의 행위를 구현한다.

객체 생성과 레퍼런스 변수

1. 객체에 대한 레퍼런스 변수 선언

ex) Person aPerson;

2. 객체 생성 (객체 내 생성자 코드 실행)

ex) aPerson = new Person("김미남");

객체 멤버 접근

객체 레퍼런스.멤버

ex) aPerson.age = 30;

생성자

객체가 생성되는 순간에 자동으로 호출되는 메소드로서 객체에 필요한 초기화를 수행하는 코드를 포함하고 있다. 즉, 객체가 생성될 때 초기화를 위해 실행되는 메소드

new를 통해 객체를 생성할 때만 호출된다.

생성자는 리턴 타입을 지정 할 수 없다.

객체화를 하면서 초기화를 바로 하려면 생성자에 알맞는 인수가 있어야 한다.

개발자가 클래스에 생성자를 하나라도 작성한 경우, 기본 생성자가 자동 생성되지 않는다.

this

this.멤버

객체 자신에 대한 레퍼런스

[this의 필요성]

1. 객체의 멤버 변수와 메소드 변수의 이름이 같을 경우

2. 다른 메소드 호출 시 객체 자신의 레퍼런스를 전달할 때

3. 메소드가 객체 자신의 레퍼런스를 반환할 때

this()

클래스 내의 다른 생성자 호출

생성자 내에서만 사용 가능, 반드시 생성자 코드의 제일 처음에 수행

객체 배열

객체에 대한 레퍼런스를 원소로 갖는 배열

1. 배열에 대한 레퍼런스 선언 ex) Person[] pa;

2. 레퍼런스 배열 생성 ex) pa = new Person[10];

3. 객체 생성 ex) for(int n=0; i<pa.length; i++) {

pa[i] = new Person(); //Person() 객체를 생성하고

pa[i].age = 30 + i; //Person 객체의 age 멤버 값을 30+i로 설정한다.

가비지 컬렉션

자바에서 가비지를 자동 회수하는 과정 (가용 메모리로 반환)

가비지 : 가리키는 레퍼런스가 하나도 없는 객체 (누구도 사용할 수 없게 된 메모리)

가비지 컬렉션 : 자바 가상 기계의 가비지 컬렉터가 자동으로 가비지 수집 반환

System.gc() : 가비지 컬렉션 강제 수행

메소드 형식

접근 지정자 : public (모든 클래스에 허용), protected (동일 패키지와 자식 클래스에 허용), 디폴트 (동일 패키지에 허용), private (클래스 내부 멤버들만 호출 가능)

리턴 타입 : 특정값 리턴하지 않으면 void

메소드 이름과 인자, 코드

메소드 오버로딩

메소드 이름이 동일하여야 한다.

메소드 인자의 개수가 서로 다르거나, 메소드 인자의 타입이 서로 달라야 한다.

매개변수 이름만 다른 것, 리턴 타입만 다른 것은 메소드 오버로딩에 성립되지 않는다.

접근 지정자

1. 클래스 접근 지정자

다른 클래스에서 이 클래스 이름을 사용할 수 있는지 허용 여부 지정 (public과 디폴트 2가지)

2. 멤버 접근 지정자

public : 모든 클래스에서 접근 가능

protected : 같은 패키지 내의 모든 클래스와 상속받은 자식 클래스 접근 가능

디폴트 : 같은 패키지 내의 모든 클래스 접근 가능

private : 클래스 내부 멤버만 접근 가능

설정자와 접근자

설정자 : 필드의 값을 설정하는 메소드, setXXX() 형식

접근자 : 필드의 값을 반환하는 메소드, getXXX() 형식

static VS non-static

non-static

공간적 특성 : 멤버들은 객체마다 독립적으로 별도 존재 (인스턴스 멤버)

시간적 특성 : 필드와 메소드는 객체 생성 후 비로소 사용 가능

비공유 특성 : 멤버들은 다른 객체에 의해 공유되지 않고 배타적

static

객체마다 생기는 것이 아닌 클래스당 하나만 생성된다. 객체를 생성하지 않고 사용 가능하다

공간적 특성 : static 멤버들은 클래스 당 하나만 생성

시간적 특성 : static 멤버들은 클래스가 로딩될 때 공간 할당

공유적 특성 : static 멤버들은 동일한 클래스의 모든 객체에 의해 공유

클래스 이름으로 바로 접근 가능 클래스명.static

[제약 조건]

1. static 메소드는 non-static 멤버 접근할 수 없음

2. static 메소드는 this 사용 불가

같은 클래스 내 메소드가 static 이면 이름으로 바로 사용 가능, 다른 클래스 메소드는 객체화 한 후 사용 가능

final

1. final 클래스 : 클래스 상속 불가

2. final 메소드 : 오버라이딩 불가

3. final 필드, 상수 정의 : 상수를 선언할 때 사용한다. 상수 필드는 선언 시에 초기 값을 지정하여 실행 중 값을 변경할 수 없다.

'Language > JAVA' 카테고리의 다른 글

#6장 패키지 개념과 자바 기본 패키지  (0) 2021.06.28
#5장 상속  (0) 2021.06.28
#3장 반복문과 배열 그리고 예외 처리  (0) 2021.06.28
#2장 자바 기본 프로그래밍  (0) 2021.06.28
[JAVA/자바]  (0) 2021.06.28
Comments