본문 바로가기

수업 복습하기/Java

Day 09 - 객체와 클래스

728x90
728x90

= 객체와 클래스

자바에서 클래스는 객체를 만들기 위한 틀~

+)수업시간에 선생님이 들어주신 예시로는, 클래스는 붕어빵 틀!이고

객체는 클래스로부터 만들어진 붕어빵으로, 만들어진 붕어빵은 다 다른 것이다.

클래스의 변수는 객체의 속성, 클래스의 메서드는 객체의 기능입니다.

 

클래스를 사용하는 이유? 틀을 만들어놓고 거기서 나오는 제품들을 대량생산 하기 위해서~

 

제일 기본적인 예시부터 공부 시작~

package day06;

public class ObjectBasic01 {
public static void main(String[] args) {
	//기존에 사용하던 방법.
	System.out.println("====1번 계산기====");
	System.out.println(add(5));
	System.out.println(add(10));
	System.out.println(add(3));
	
	System.out.println("====2번 계산기====");
	System.out.println(add2(10));
	System.out.println(add2(20));
}	
//	1번 계산기
	static int result=0;
	static int add(int a ) {
	result+=a;
	return result;
	}
	
	//2번계산기
	static int result2=0;
	static int add2(int a) {
		result2+=a;
		return result2;
	}
}

기존에는 이와같이, main method안에 println을 넣어서 원하는 출력값을 꺼내왔다.

같은 기능을 가진 메서드 사용을 위해서 똑같은 메서드를 계속 생성해왔다.

하지만 클래스를 이용한다면? 

똑같은 메서드를 반복해서 적을 필요 없이, 클래스를 생성해서 그 안에있는 메서드를 이용하면 된다.

얼마나 훌륭한 방법인가!?

+) 메서드 : 대량 생산틀의 기능 

(이름치고 "."을 치고 뒤에 적으면 사용할 메서드 고를 수 있음)

 

- 클래스

package day06;

public class Calculator {
	int result=0;
	int add(int a ) {
		result+=a;
		return result;
	}
}

- 메인

package day06;

public class ObjectBasic02 {
	public static void main(String[] args) {
		
	System.out.println("====1번 계산기====");
	
	Calculator cal1 = new Calculator();
	System.out.println(cal1.add(5));
	System.out.println(cal1.add(10));
	System.out.println(cal1.add(3));
	System.out.println("====2번 계산기====");	
	Calculator cal2 = new Calculator();
	System.out.println(cal2.add(10));
	System.out.println(cal2.add(20));

	}

}

- 출력값

실제로는, println을 여러번 써야되서 왜저렇게 써야 하나 생각이 들지만,

복잡한 식으로 넘어가기 시작하면 클래스를 활용하는 방법이 얼마나 쉬운지 깨달을 수 있다.

 

= 객체 생성 명령

ClassName instanceName = new Constructor();

ex) Variable var = new Variable();

 

= 클래스 내에 존재하는 것들

- 멤버 변수 (Member Variable): 대량 생산틀의 속성

  클래스 안에 생성된 변수로 (초기값이 필요없다는 것이 특징)

ex) String a;

 

- 지역 변수 (Local Variable) 

 메서드 안에서 선언된 변수

 사용하기 전에 반드시 초기화 해야 함

 

아래는 멤버,지역,매개 변수 활용하는 예제 )

package day06;

public class Variable {
	//초기화 하지 않더라도 기본값으로 자동초기화,(0 0.0 false (String)null)
	int a;
	
	void printNumber(int c) {
		int b=1;
		System.out.println("멤버변수:"+a);
		System.out.println("지역변수:"+b);
		System.out.println("매개변수"+c);
	}
}
package day06;

public class VarMain {
public static void main(String[] args) {
	Variable var = new Variable();
	System.out.println(var.a);
	var.a=100;	//변경
	var.printNumber(10);
}
}
package day06;
//설계도 클래스
public class Pen {

	//멤버 변수 - 클래스의 속성을 나타냅니다.(필드) -> 선언만 하는곳이라 생각하면 편하다
	String ink;
	int price;
	String company;
	
	//ink = "빨강"이런방식은 사용 x  -> 매서드 안에서 사용해야함
	//매서드 - 클래스의 기능을 나타낸다. (값의 변경도 메서드 안에서)
	void write() {
		System.out.println(ink+"색상 글씨를 씁니다");
	}
	void info()	{
			System.out.println("=====펜의 정보=====");
			System.out.println("색상:"+ink);
			System.out.println("가격"+price);
			System.out.println("제조사"+company);
	}
}
package day06;

public class Penmain {
public static void main(String[] args) {
	//Pen의 기능을 사용하고 싶다면 객체로 생성해야 합니다!
	Pen black = new Pen();
	
	black.ink="검정";
	black.price=2000;
	black.company="모나미^^";
	black.write();
	
	Pen red = new Pen();
	red.ink="빨강";
	red.price=3000;
	red.company="하잉테크";
	red.write();
	
	black.info();
	red.info();
}
}

= 출력값

728x90