클래스
1. 특정한 종류의 객체들을 찍어내는 형틀, 청사진이라고 할수 있습니다.
2. 객체 지향에서는 소프트웨어의 기본 단위가 클래스 입니다.
3. 소프트웨어를 만들어간다고 하는 것은 클래스를 하나씩 추가하는 과정 입니다.
4. 데이터와 코드를 동시에 가지고 있습니다.
인스턴스
클래스로 부터 만들어지는 각각의 객체 입니다.
객체가 너무 광범위한 의미를 가지고 있어 특정한 클래스로부터 생성된 객체를 그 클래스의 인스턴스라 합니다.
클래스 구조
형식 :
class 클래스명 {
자료형 필드명1;
자료형 필드명2;
반환형 메소드1( ... ){ ... }
반환형 메소드2( ... ){ ... }
}
1. 클래스 안에는 필드와 메소들이 정의 됩니다. 이들을 클래스의 멤버라 합니다.
▶ 객체의 상태를 나타내고 메소드는 객체의 동작을 나타냅니다.
▶ 필드는 객체 안에 정의된 변수이고 변수를 정의하듯이 자료형과 변수명을 작성하면 됩니다.
2. 잘 설계된 클래스는 오직 하나의 논리적인 개념만 정의 해야 합니다.
3. 시작점이 되는 경우에만 클래스 안에 main() 메소드가 필요합니다.
객체 생성
클래스는 객체가 아닙니다. 클래스는 객체를 만들기 위한 설계도에 해당됩니다.
설계도를 가지고 어떤 작업을 할수 없습니다.
선언하는경우 public 사용해야 합니다.
new 연산자를 이용하여 클래스의 객체를 생성하고 객체의 참조갑(메모리주소값)을 반환하면 동적 메모리
할당을 이용하여 객체가 생성됩니다.
참조변수
자바에서는 변수를 기초, 참조 변수로 구분가능합니다.
기초 변수 :
int, float, char 등 기초 자료형의 값을 저장하는 변수이고 실제 데이터 값이 저장됩니다.
참조 변수 :
객체를 참조 할 때 사용되며 변수로서 객체의 참조값이 저장됩니다.
참조값은 일반적으로 객체의 주소 입니다. 하지만 객체가 직접 저장되는 것이 아닙니다.
객체 멤버 접근
객체의 필드, 메소드를 참조하려면 참조 변수에 멤버 연산자(.)를 사용해야 합니다.
필드라는 이름대신 인스턴스 변수라는 용어도 많이 사용됩니다.
객체 지향의 경우 필드를 외부에서 직접 접근하는 것은 바람직하지않고
객체내의 필드는 메소드를 통행서 간접적으로 접근하는 것이 바람직합니다.
형식 : 참조변수.메소드 = 7;
객체 다중 생성
각 객체는 클래스에 정의된 필드의 자체 복사본을 가지고 있어 하나의 객체에 들어 있는 변수의 내용은 다른 객체에
들어 있는 변수의 내용과 다릅니다.
쓰레기 수집기
자바에서 객체들은 new 연산자에 의하여 히프 메모르에서 할당됩니다.
히프 메모리는 컴퓨터에서 사용 가능한 메모리를 모아 높은 곳입니다.
히프 메모리는 언제든 고갈될 수 있어 미사용하는 객체들을 삭제하여 메모리를 확보하는 것이 필요합니다.
다른 언어와 달리 자바에서는 자동 메모리 수거 시스템을 사용 하는데 이것을 쓰레기 수집(garbage collection)라 합니다.
참조 변수에 null 이 대입된경우 생성된 객체를 가리키는 참조 변수는 하나도 남아 있지 않아 이런 경우
쓰레기 수집기가 메모리에서 객체를 제거 합니다.
메소드
1. 클래스 안에 정의된 함수 입니다.
2. 클래스 안에 성언된 특정한 작업을 수행하는 문장들의 모임입니다.
3. 각 메소드는 오직 하나의 작업만 하도록 작성하는것이 좋습니다.
4. 어떠한 이름도 메소드에 할당 가능하지만 main()이라는 이름은 프로그램의 실행이 시작되는 중요한 메소드 이므로 미사용해야 합니다.
5. 작업에 데이터를 전달 받아 완료된 후 작업의 결과를 호출자에게 반환합니다.
형식 :
반환형 메소드명(자료형 매개변수1, 자료형 매개변수2, 자료형 매개변수3) {
//메소드 몸체
}
메소드 종료
2가지의 조건이 존재합니다.
1. 메소드 안의 문장들을 실행하다 "}" 를 만나 종료 됩니다.
2. return 문장이 실행되는 경우 종료 됩니다.
▶ return 문장은 어떤 값을 반환하거나, 미반환 가능합니다.
메소드의 반환값
메소드는 return 문장을 사용하며 값 반환이 가능합니다.
값을 미반환하기 위해서는 메소드 반환형을 void로 해야 합니다.
반환값의 자료형은 메소드 반환형이 동일해야합니다.
▶ 불일치 하는경우 컴파일 오류 발생
인수와 매개 변수
인수 : 호출하는 곳에 메소드 호출시 전달하는 값
매개변수 : 메소드에서 값을 받을 때 사용하는 변수
인수 형식 :
int sum = 메소드1(인수1, 인수2);
매개변수 형식 :
int 메소드1(인수1, 인수2)
{
return 인수1 + 인수2;
}