클래스
클래스란?
- 객체를 정의해 놓은 것. 객체의 설계도 또는 틀. 객체를 생성하는데 사용된다. 클래스에는 객체의 모든 속성과 기능이 정의되어 있다.
객체란?
- 실제로 존재하는 것. 사물 또는 개념.. 객체가 가지고 있는 기능과 속성에 따라 용도가 달라진다. 클래스에 정의된 내용대로 메모리에 생성 된 것.
인스턴스(Instance)란?
- 객체를 만드는 법. 클래스로부터 객체를 만들어 실제 존재하는 메모리에 올라가는 것. 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미. 만들어진 객체가 Instance
객체의 구성 요소
- 속성(Property) : member variable , field, attribute, state 등..
- 기능(function) : method, function, behavior …
- new 연산자 : 객체를 생성해주는 역할. 메모리 영역에 데이터를 저장할 공간을 할당받고, 그 공간의 참조값을 객체에게 반환하여 주고 이어서 생성자를 호출한다.
- 생성자 : 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드 , 인스턴스 변수들을 초기화 하는 것을 뜻한다.
인스턴스 생성 과정
- new에 의해서 메모리(heap)영역에 클래스의 인스턴스가 생성된다.
- 생성자가 호출되어 변수들의 초기화를 수행한다.
- new의 결과로 생성된 인스턴스의 주소가 반환되어 참조변수에 저장된다.
- 생성자는 클래스의 이름과 같아야 한다. 생성자는 리턴 값이 없다. 모든 클래스에는 반드시 하나 이상의 생성자가 정의되어 있어야 한다.
- 생성자가 없을경우 기본 생성자를 컴파일러가 추가해서 컴파일해줌.(생략가능)
- 생성자도 메서드 처럼 매개변수를 선언하여 호출 시 값을 넘겨 받아서 인스턴스 초기화 작업에 사용 할 수 있다.
- this - > Java에서 this는 객체, 자기 자신을 나타낸다.
this의 사용 예시
1. 생성자/메소드의 매개변수의 이름이 같은 경우
2. 클래스에 오버로딩된 다른 생성자 호출
3. 객체 자신의 참조값을 전달하고 싶을때
메서드(method)
- 특정 작업을 수행하는 일련의 코드들을 하나로 묶은 것.(Java에서는 Method, 다른곳에서는 function등으로 부름).
- 반복되는 코드를 줄여주고, 좀 더 구조화시켜 코드를 알아보기 쉽게 함.
- 메서드는 void를 통하여 반환값이 없을수도 있고, 반환값을 포함하는 메서드도 있다.(return type)
메서드의 구조
<접근 제어자> < 반환 유형 > <메서드 식별자 이름> (매개 변수) {
기능 상세;
}
//매개 변수는 있을수도 없을 수도 있다.
public void hello() {
System.out.print("Hello Java");
}
public vod consolePrint(int a, int b) {
System.out.print(a+b); //콘솔에 a+b의 값을 출력해준다.
}
public int multiple(int a, int b) {
return a+b; //a+b의 값 자체를 반환 해준다.
}
반환 유형(return type)
- 메서드가 시행한 후 메서드를 호출한 곳에 반환하는 값의 데이터 타입.
- 반환값이 있는 메서드도 있고, 없을 수도 있다(void).
- 결과값을 반환할 때는 return 이라는 키워드를 사용한다.(mutiple() 메서드 예시)
- return이 실행되면, 즉시 메서드의 실행이 끝이 난다.
매개 변수(parameter)
- 필요한 데이터를 외부로 부터 받기 위해 사용된다.
- 매개 변수도 일종의 변수이기 때문에 메서드의 () 부분에 데이터 타입과 함께 선언해야 하며, 초기화는 하지 않는다.
- 매개 변수를 여러개 선언할 수 있으며, 선언하지 않을 수도 있습니다.