CS

자바 객체,클래스,메소드 (C와 비교)

Junly_21 2021. 9. 23. 00:47

java를 사용하기 위해 공부하던 중, C와 다른 '객체'와 '클래스' '메소드'등의 개념이 너무 많이 들린다.

 

처음 시작할때부터 분명 어떤건지 설명을 듣고 시간이 지나며 계속 듣는데도 익숙해지기만 할 뿐 헷갈리는것은 여전하다.

 

그래서 이곳에 정리를 하며 전부 다 파악은 못해도 파악한 부분에 한해 확실하게 이해를 해야겠다.

 

객체는 단순히 '지갑' 혹은 '티비'같은 어떤 오브젝트로 우선 예시를 든다. 

 

클래스는, 객체를 정의해놓은 것이다.

고로 클래스는, 객체를 생성하기위해 사용된다.

또한 클래스는, 사용자 정의 타입을 만들 수 있다.

class Time {
	int hour;
	int minute;
	float second;
}

Time이라는 클래스에 사용자 정의 타입을 만든 것이다.

대략적으로 시계를 설계하기 위한 준비과정을 클래스라고 생각하면 될 것 같다.

 

시간은 무형의 객체이니, 다른예시로는

class Tv{
	String color; // 색상에 대한 문자열
	boolean power; //전원 상태에 대한 0 과 1
	int channel;
}

Tv가 있다. 바로 위의 Tv 클래스는, Tv라는 객체를 만들기 위한 설계인 것이다.

이제 객체를 선언하면, Tv가 만들어진다.

public class test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        
		Tv samsung = new Tv();
		Tv LG = new Tv();
	}
}

삼성 Tv 하나와

LG라는 Tv객체를 하나 만든것이다.

 

음...아직은  실사용에서 C의 사용자 정의 함수와 크게 어떤 것이 차이인지 잘 모르겠다.

 

그렇다면 메소드는 어떻게 정의될 수 있을까?

 

인터넷을 참고해 공부하던 중 다음과 같은 문장을 발견했다.

 

"보통 다른언어에는 함수라는 것이 별도로 존재한다. 하지만 자바는 클래스를 떠나 존재하는 것은 있을 수 없기 때문에 자바의 함수는 따로 존재하지 않고 클래스 내에 존재한다. 자바는 이 클래스 내의 함수를 메소드라고 부른다."

 

음...아하, C의 함수와 자바의 클래스,객체는 요런 느낌의 차이가 있구나... 비슷하면서도 다르다. 그래도 한 흐름으로 받아들이면 된다는 사실은 이해에 큰 도움이 된다.

 

하나의 언어를 잘 구사하는 대부분의 사람에게는 쓸모없는 비교이지만 본인은 수업이 C와 Java가 동시에 진행되고 있으므로, 비슷한 환경에 있는 사람들, 특히 1학년때 C를 배우고 자바를 이후에 배우는 사람들은 이 예시를 통해 이해를 하기 쉬울 것이다.

 

#include <stdio.h>

int sum(int num1, int num2)
{
	int val;
	val = num1 + num2;
	return val;
};

int main()
{
	int a = 3; int b = 4; 

	int c = sum(a, b);
	printf("a=%d, b=%d, c=%d", a, b, c);

	return 0;
}

C에서의 sum 함수를 구현하는 방법이다.

 

package test;

public class test {

	public int sum(int a, int b) {
		return a + b;
	}

	public static void main(String[] args) {
		int a = 3;
		int b = 4;

		test method = new test();
		int c = method.sum(a, b);

		System.out.println(c);
	}
}

Java에서의 sum 메소드를 구현하는 방법이다.

 

정리를 해보니 이제 왔다갔다 공부하면서도 크게 헷갈리지 않는다.