일단 해보는 코딩/Java

[Java] 클래스 생성(도트연산자), 인수의 반환/값

eun_zoey2 2022. 8. 7. 15:05
728x90

1. 클래스

객체를 만들기 위한 설계도라고 볼 수 있다. 클래스에는 객체를 생성하기 위한 속성(멤버 변수)과 (멤버 메써드)을 정의해 놓은 것.

클래스를 통해서 객체를 생성한다. 여기서의 메써드는 멤버 메써드이다. 보통 main ( ) 메써드 위에 클래스가 자리한다.

메인 메써드에서 처리할 내용을 예상해서 클래스에 미리 정의해둔다.

이 클래스 안에서 자신의 변수나 메써드를 지정할 때 this.~  사용한다. 

 

1-1. 클래스의 구현 방법

* 클래스명은 첫문자 대문자로 ~!

 

2. 클래스로 객체 만드는 방법

2-1. 인스턴스(Instance) - '인스턴스(Instance)=객체(object)' 

클래스를 통해서 만들어진 객체 또는 클래스로부터 객체를 만드는 것을 인스턴스를 생성한다고 하며 인스턴스화 한다고 한다.

인스턴스가 있어야(클래스에서 생성한 객체) 클래스에 속한 멤버 변수와 멤버 메써드를 사용할 수 있다.

 

2-2 객체 생성 방법 -  '클래스_명 객체_명 = new 클래스_명' 

클래스로 객체 값을 만들 메모리를 할당하고(new), 객체 값을 생성(클래스명) 변수에 저장해라!!!!!

 

알아두기!!

더보기

인스턴스 변수

자신만의 속성을 가지고 있는 변수이고, 클래스 변수는 모든 인스턴스가 공통으로 가지고 있는 속성의 변수이다.

클래스 메써드와 인스턴스 메써드가 있다. 

 

참조 변수 

주소를 저장하는 변수

 

객체

물리적으로 존재하거나 추상적인 것에서 자신만의 속성을 가지고 있어서 다른 것들과 구별되는 것으로 속성(필드)과 동작(메써드)으로 구성된다, 객체와 객체끼리 메써드를 통해서 상호 작용을 할 수 있다. 

=> 클래스에서 객체를 생성하면 이 객체는 클래스가 가지고 있는 모든 멤버(속성, 메써드)를 포함하므로 이 객체로 클래스의 멤버들을 이용할 수 있다.

 

매써드(함수)

특정한 작업을 수행하기 위한 명령문의 집합.

어떤 값을 입력받아서 그 결과를 돌려준다. 입력받는 값이 없을 수도 있고 결과를 돌려주지 않을 수도 있다. 

메써드를 사용하면 반복적인 코드를 줄이고 관리가 용이하다. 반복적으로 수행되는 여러 문장을 하나의 메써드로 작성한다.

접근권한 지정자인 리턴_타입

 

매개_값(parameter/argument)

메써드를 실행하기 위한 입력 데이터이다.객체 간의 상호작용은 메써드 호출이 있어야 하며 매개_값 리턴_값을 통해서 데이터를 주고받는다.

 

3. 객체 내 값을 사용하는 방법 - 도트 연산자( . )

객체의 필드와 메써드에 접근할 때 사용된다.  'static 클래스.변수'로 호출하거나 '객체변수. 필드_명'로 호출한다.

클래스 안에 클래스를 생성할 수 있다.  다른 객체의 필드(멤버 변수와 멤버 메써드)를 참조하거나 대입하기 위해서 . 을 사용한다.

 

 

 

예제 1)

package Java06;
class Wed {
	int month;	// 각각 멤버 벤수를 선언, 필요하면 메써드도 존재할 수 있다. 
	int day;
	String sky;
}	// 여기까지가 Wed라는 클래스의 필드(field)
public class Weather {	// 파일_명은 main() 메써드가 있는 class_명으로 대소문자 구분하여 저장.
	public static void main(String[] args) {
		Wed today = new Wed();	
		//Wed 클래스를 이용해서 today라는 객체를 생성 => 인스턴스화 라고 한다.
		// today 객체는 필드의 모든 요소들을 가지고 있음.
		// ★ main Weather class 에서 별도의 변수, 메써드 지정 없이 객체를 이용해서 필드에 있는 
		// 멤버 변수나 멤버 메서드를 .연산자를 이용해서 사용.
		today.month = 07;
		today.day = 25;
		today.sky = "맑음";
		System.out.println(today.month + "월" + today.day + "일" + " 날씨" + today.sky);
	}
}
더보기

예제 2)

package Home20;

public class Exam31 {
	public static void main(String[] args) {
		Car myCar = new Car();
		System.out.println("시동 처음 초기화 " + myCar.powerOn);
		System.out.println("차의 색상 초기화 " + myCar.color);
		System.out.println("바퀴의 수 초기화 " + myCar.wheel);
		System.out.println("속력 초기화 " + myCar.speed);
		System.out.println("와이퍼 작동 초기화 " + myCar.wiperOn);
		System.out.println("-------------------");
		myCar.power();
		System.out.println("시동 메서드 동작 : " + myCar.powerOn);
		myCar.power();
		System.out.println("시동 메서드 다시동작 : " + myCar.powerOn);
		myCar.color = "black";
		System.out.println("현재 차의 색상 : " + myCar.color);
	}
}
class Car{
	boolean powerOn;
	String color;
	int wheel;
	int speed;
	boolean wiperOn;
	
	void power() {powerOn =!powerOn;}	// true->false.false->true
	void speedUp() {speed++;}
	void speedDown() {speed--;}
	void wiper() {wiperOn=!wiperOn;}	// true->false.false->true
}
package Home20;
// 앞에서 만든 Car class 를 별도로 생성하지 않고 각 객체와 메서드를 호출하여 사용
public class Car_2 {
	public static void main(String[] args) {
		Car myCar1 = new Car();
		Car myCar2 = new Car();
		myCar1.color = "red";
		myCar2.color = "yellow";
		myCar1.speedUp();
		myCar2.wiper();
		
		System.out.println("myCar1의 색 : " + myCar1.color); 
		myCar1.color="green";
		System.out.println("myCar1의 색 : " + myCar1.color); // myCar1의 색 : green
		System.out.println("myCar2의 색 : " + myCar2.color); 
		
		System.out.println("myCar1의 속도 : " + myCar1.speed);
		System.out.println("myCar2의 속도 : " + myCar2.speed);
		
		System.out.println("myCar1의 와이퍼 작동여부 : " + myCar1.wiperOn);
		System.out.println("myCar2의 와이퍼 작동여부 : " + myCar2.wiperOn);
	}
}

 

인수와 반환 값

 

a) 메써드의 반환 값이 없으면 함수에서 반환 값의 데이터_형을 void로 해준다. 

void disp (int a) {
System.out.println("인수의 값은 “ + a);
return;
} 구문이다.

함수에서 void 형으로 정의했기 때문에 반환 값이 없어서 return 뒤에 아무것도 없다. 이런 경우 return을 생략해도 된다.

b) 인수 없이 double 형 반환 값만 있다면 

double half( ) {
double b;
b = a / 2.0;
return b;
} 구문으로 해준다.

c) 인수도 반환 값도 없으면

void print( ) {
System.out.println("Hello");
// return;
} 구문으로 해준다.

여기서 System.out.println()도 함수이기 때문에 “Hello”를 인자로 해서 인쇄해준다.