본문 바로가기

JAVA/DAY 11 _ 23.08.31

Method

public class P3_method {

public static void main(String[] args) {		// void : main이라는 이름을 가진 매서드 (return은 없다)



    Car c1 = new Car("현대", 5, 10);

    // c1.doSomeThing();		// 매서드 호출 문법
                                	// 호출할때마다 doSomeThing 시행이 주르륵 된다.

    // c1.speed; 왜안되노

    System.out.println(c1.name);
    // 아 안되는 이유 : 저건 호출 문법이야ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 매서드만 호출되겠지? ㅇㅋㅇㅋ

    c1.run();		// 현대는5의 속도로 달린다
    c1.run();
    c1.run();
    c1.run();		// 현대는2의 속도로 달린다


    Car c2 = new Car("마르세데스", 10, 20);		// 매개 변수를 초기화 시킬 수 있다는게 이런거겠구나

    c2.run();		// 마르세데스는10의 속도로 달린다
    c2.run();
    c2.run();
    c2.run();
    c2.run();		// 마르세데스는6의 속도로 달린다 


    int a = c2.doSomeThing(10, 2); 			// 홀수가 아니니까 syso출력, return a+b해서 12
    System.out.println(a);

    a = c2.doSomeThing(5, 3);				// 5가 홀수니까 바로 return해서 -1 출력
    System.out.println(a);

    // ★★★★ 매개변수의 초기화
    // doSomeThing() 메서드는 호출될 때마다 속도를 증가시키고 연료를 감소시키는 기능을 수행
    // 이렇게 하면 c1과 c2 인스턴스의 속성이 변경되며, 메서드를 호출할 때마다 결과가 달라지겠지


    c1.test(20);


    // int k = c1.test(30);			--> void니까 int로 호출하면 type mismatch가 뜨지

}
class Car{
	
	// 1. 속성
	String name;
	int speed;
	int fuel;
	
	
	// 2. 생성자
	Car(String name, int speed, int fuel ){
		
		this.name = name;
		this.speed = speed;
		this.fuel  = fuel;
		
	}
	
	
	// 3. 메서드 : 함수와 비슷한 개념을 클래스 내부에 구현하는 것
	// ---> 함수 로직에 이름을 붙여서 묶은거!!!!!!!!
	
	// 문법 : 리턴타입 매서드명(N개의 매개변수) {코드코코코ㅗ코코드....}
	// ---> 리턴타입 존재시, 항상 그에 맞는 값을 리턴해줘야한다
	// ---> 리턴이 필요없는 경우 : void를 쓰자
	
//	int add(int a, int b) {		
// 	 a,b : 매개변수(parameter) / add : 메서드명 / int : 리턴타입
//		return a + b;
//	}
	
	void oiling(int amount) {
		
		fuel += amount;
	}
	
	
	boolean run() {
		
		if(fuel <= 0) {
			System.out.println("경고 ] 기름이 없습니다. 주유하세요");
			return false;						
          	  // 달리면 안되니까 return으로 탈출!
		}  
		
		System.out.println(name + "는" + speed + "의 속도로 달린다");				
       		 // 원래는 this.name인데 생략가능
		speed--;
		return true;
	}
	
	
	
	

	
	
	int doSomeThing(int a, int b) {		// 이건 예시긴한데, 응집도가 낮다 (매서드면 매서드 답게 속성에서 정의한 this들을 잘 활용해야한다)★★★★★★★★
		
		test(b);			// 같은 클래스 내에 있는 것은 이렇게 써도 호출이 되겠지...
		
		if(a % 2 == 1) {
			return -1;			// return을 만나면 if문을 탈출한다 (+ 그 값을 return해준다) ★★★★
		}
		
		System.out.println("이렇게 쓰면");
		System.out.println("매서드를 정의만 한거야");
		System.out.println("호출을 해야 시행이 된다구여~");
		
		// return "안녕"; 			
        // -> 이것도 타입이 같아야해 (리턴타입이 int니까 문자는 안된다고)
		
		return a+b;	
		
	}
	
// return 숫자 말고 --> return 어떠한 메서드?호출하고싶으면
// int processedValue = inputValue.length();
// return processedValue; 이런느낌

	
	void test(int a) {			// return타입이 void인 경우 return이 없어도 된다
						 // return 이후에 문자열, 숫자는 안되고, return;만 되징
		if(a < 10) {
			return;
		}
		
		System.out.println("테스트 호출됨");
	}

}

'JAVA > DAY 11 _ 23.08.31' 카테고리의 다른 글

Setter & Getter - self study  (0) 2023.09.10
Class - self study  (0) 2023.09.10
Math.  (0) 2023.09.10
Constructor  (0) 2023.09.10
Instance  (0) 2023.09.10