본문 바로가기
Application/Java

[Jump2Java] 05장 객체지향 프로그래밍 02

by 윤루트 2021. 9. 14.

Jump2Java 05장. 객체지향 프로그래밍

- 메소드

 

메소드

  • 클래스 내에 구현된 함수
  • 메소드를 이용한 객체 변수에 값 넣기
    • setName 메소드
      • 입력: String name
      • 리턴: void (리턴값 없음)
public class Animal {
	String name;

	public void setName(String name) {
			this.name = name;
	}

	public static void main(String[] args) {
			Animal cat = new Animal();
			cat.setName("Aeong2");
			System.out.println(cat.name);
	}
}

main 함수에서 cat.setName()을 통해 cat 객체에 의해 메소드를 호출한다.

  • 이때 메소드에서 this는 cat 객체가 되어 cat.name = "Aeong2"; 가 된다.
  • 객체 변수는 공유되지 않는다.
public static void main(String[] args) {
	Animal cat = new Animal();
	cat.setName("Aeong2");

	Animal dog = new Animal();
	dog.setName("Daengdaeng2");
	
	System.out.println(cat.name);
	System.out.println(dog.name);
}

/* 출력 결과	
Aeong2
Daengdaeng2
*/
  • setName이 두 번 호출하므로 name은 이후에 바뀐 "Daengdaeng2"로 전부 바뀔 것으로 예상할 수 있다.
  • 하지만, cat 객체에 대한 name과 dog 객체에 대한 name은 각각 다른 객체 변수이므로 이 둘은 독립적으로 유지된다.
  • 계산기 메소드
    • Test 메소드
      • 입력: int a, int b
      • 리턴: int a+b
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 myTest = new Test();
        int c = myTest.sum(a, b);

		System.out.println(c);
	}
}

// 출력결과: 7
  • 입력값이 없는 메소드
    • Greeting 메소드
      • 입력: 없음
      • 리턴: String 자료형
public class Greeting {
	public String Eng() {
			return "Hi";
	}

	public static void main(String[] args) {
			Greeting myGreeting = new Greeting();
			String say = myGreeting.Eng();

			System.out.println(say);
	}
}
  • 메소드로 객체 전달 시 객체 변수 변경 가능
class Updater {
	public void update(Counter counter) {
			counter.count++;
	}
}

public class Counter {
	int count = 0;
	public static void main(String[] args) {
			Counter myCounter = new Counter();
			System.out.println("before update: " + myCounter.count);

			Updater myUpdater = new Updater();
			myUpdater.update(myCounter);
			System.out.println("after update: " + myCounter.count);
	}
}

/* 출력결과
before update: 0
after update: 1
*/

댓글