이번 게시물에서는 자바의 꽃이라고 불리우는 클래스와 객체에 대한 첫번째 게시물 입니다. 게시물의 내용은 박은종 저자의 'Do it 자바프로그래밍 입문'을 참고하여 작성하였습니다. 👻

<클래스>

먼저 자바는 객체지향 프로그램으로 클래스를 기반으로 프로그래밍합니다.

클래스는 객체의 속성과 기능을 코드로 구현하는 것이라고 생각하면 됩니다. 즉 객체를 클래스로 구현 하는 것을 클래스를 정의한다 라고 말합니다.

또한 속성(멤버변수)는 특정 클래스의 속성을 의미합니다. 예를 들자면 학생 객체에는 student ID, grade, adress 등의 속성을 포함하는 것을 말합니다.

<메서드(method)>

클래스 내부에서 속성을 이용하여 클래스 기능을 구현 한것을 의미합니다.

package classpart;

public class Student {
	int studentID;
	String studentName;
	int grade;
	String address;
	
	public void showStudentInfo(){
		System.out.println(studentName+","+address);
	}
}

이 코드에서 보자면 studentName과 address라는 속성을 이용해서 하나의 함수를 만든 것을 확인 할 수 있습니다. 바로 이런걸 의미합니다.

<패키지>

패키지란 간단히 말하자면 클래스 파일의 묶음입니다.

패키지를 만들면 하위에 물리적으로 디렉터리가 생성됩니다. 또한 패키지는 우리 컴퓨터의 폴더와같이 계층구조를 갖습니다. 이를 적절하게 이용하면 좋은 패키지를 만들 수 있죠.

<함수>

코딩을 한번이라도 해본 사람에게는 익숙한 함수는 Java에서는 이렇게 구성됩니다.

(함수반환형태) (함수이름) (매개변수){return}

이렇게 쓰고보니깐 이해가 더 안되는 것 같으니 바로 예시로 넘어가죠

int getTenTotal() {
	int i;
	int total=0;
	for(i=1;i<=10;i++) {
		total+=i;
	}
	return total;
}

이런 형식이 가장 기본적인 형식이고 가끔은 반환형태가 없는 함수가 필요할 때가 있죠. 그럴 땐 아래와 같이 표현해줍니다.

void divide(int num1,int num2) {
	if(num2==0) {
		System.out.println("나누는 수는 0이 될 수 없습니다.");
		return; // 함수수행 종료
	}else {
		int result=num1/num2;
		System.out.println(num1 +"/"+num2+"="+result+"입니다.")
	}
}

함수반환형식에는 void를 사용하고 return값이 없을 때는 그냥 return만 사용하여 다음 함수로 넘어갈 수도 있습니다.

<인스턴스와 참조변수>

위에서 말했듯이 객체란 '의사나 행위가 미치는 대상' 이라고 정의했습니다. 그리고 이를 코드로 구현 한 것이 클래스죠.

인스턴스는 클래스가 메모리 공간에 생성된 상태를 의미합니다.

인스턴스는 하나의 클래스 안에 여러가지의 인스턴스가 생성 가능하다는 특징을 가지고 있습니다. 학교를 예를 들자면 학생이란 추상어는 하나지만 학교안을 살펴보면 학생1,학생2,,,,, 이렇게 많은 학생들이 있죠. 이런 학생 1,학생2,,,, 들을 인스턴스라고 생각하면 됩니다.

예시를 봐보죠.

package classpart;

public class StudentTest1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student student1 = new Student();
		student1.studentName = "안연수";
		System.out.println(student1.getStudentName());
		
		Student student2 = new Student();
		student2.studentName = "안승연";
		System.out.println(student2.getStudentName());

	}

}

Student라는 클래스 자료형으로 student1,studemt2라는 변수명을 설정하고 new를 통해 새로운 인스턴스를 생성하였습니다.

그 다음 student1.studentName 이라는 코드를 작성하였는데요. 여기서 .(마침표)뒤에 쓴 부분은 인스턴스의 속성변수입니다.

즉 클래스에만 속성이 부여되는게 아니라 인스턴스에도 속성을 부여할 수 있음을 확인 할 수 있습니다. 와우

그리고 여기서는 System.out.println(student2.getStudentName()) 라고 입력하여서 student2의 속성값인 이름을 출력했지만. 만약에 System.out.println(student2)라고 작성한다면 @주소값으로 출력됩니다.

profile
개발자가 되고 싶은 완동.

0개의 댓글