Java/모두의 자바

Chapter 05-28 메서드 사용하기

계란💕 2022. 2. 5. 15:57

05-28.1 메서드 사용하기 

 

  - 지난 단원에서 MyClass 클래스 안에  정의한 5개의 메서드를 이용하자.

  Ex)

c++
열기

  Note) 출력 결과

  - MyClass가 가진 메서드를 사용한다.

  - 클래스가 가진 메서드를 사용하려면 먼저 객체로 만들어야 한다.

  - MyClass myclass = new MyClass();

    -> MyClass가 가진 메서드를 사용하려면 반드시 MyClass가 객체로 만들어져야 한다. 

    -> MyClass : 클래스명

    -> myclass : 변수명 

  - my clsas옆에 마침표를 찍으면 MyClass가 가진 메서드나 필드에 접근할 수 있다.

  - method3의 실행결과로 "m3 실행"이 나왔으나 10을 반환했는지는 알 수 없다.

  - 따라서, method3처럼 반환하는 메서드를 수행할 때는 반환값을 받아낼 변수(value)가 필요하다.

  - method4는 반환값이 없으나 메서드를 사용하기위해 정숫값 두 개를 꼭 넣어야 한다. (5, 10)

  - method5도 method3과 마찬가지로 변수 value2가 필요하다. 

  - 자바는 내가 만든 객체 뿐만 아니라 이미 만들어진 객체도 굉장히 많다. 

  - 객체가 제공하고 메서드 사용법도 중요하다.

 

 

05-28.2 메서드 사용하기 실습

  Ex 1) 참조형과 참조형이 아닌 경우의 큰 차이는 메서드 호출에 대한 점이다.

  다음 코드는 기본형 변수 arr과 addOne이라는 메서드에 전달합니다. 

  코드를 실행하여 참조형과 기본형이 어떻게 다른지 확인하라.

  Ex)

c++
열기

  Note) 출력결과

  - 기본형 변수

    -> 기본형 변수가 메서드에 전달될 때는 값의 복사본을 전달한다. 전달된 값은 메서드에 선언된 매개 변수에 저장,

    -> 원본 변수에도 값이 들어있고 메서드에 선언된 변수에도 값이 들어있다. 

    -> 메서드를 실행하면서 해당 값이 바뀌더라고 원본 변수의 값은 바뀌지 않는다.

    -> 그러므로 10을 출력.

 

  - 참조형 변수

    -> 변수에 값이 아닌 "주소"가 들어있다. 

    -> 따라서 메서드에 전달될 때, 주소의 복사본을 전달하고 메서드에 선언된 매개변수에도 주소값이 들어있다. 

    -> 원본 변수와 메서드에 선언된 변수에도 값이 저장된 메모리의 주소가 들어있다

    -> 따라서, 두 변수는 같은 곳을 가리킨다. 

    -> 그러므로 메서드 실행하면서 해당 값이 바뀌면 원본 변수가 가리키는 곳의 값이 바뀌었으므로

    -> 같이 바뀌게 된다.

    -> 참조형 출력결과 : 11

 

 

05-28.3 메서드 사용하기 실습

  Ex 2) CarExam의 main에서 Car클래스의 인스턴스를 만들고 run메서드를 호출하라.

  Car클래스는 다음과 같이 정의한다.

c++
열기
c++
열기

  Note) 출력 결과: 차가 달립니다.

  -  클래스를 사용하기위해 반드시 인스턴스화해야 한다.

  - 인스턴스 생성하기 위해 "new"키워드를 이용한다. 

  - 따라서 run이라는 메서드를 사용할 때는 " 변수명. 메서드명() "형태로 사용한다.