7 장 . 클래스 : 기능
DESCRIPTION
7 장 . 클래스 : 기능. Java. public class SumTest { public static void main(String a1[]) { int a, b, sum; a = Integer.parseInt (a1[0]); b = Integer.parseInt (a1[1]); sum = a + b ; // 두 수를 더하는 부분입니다 System.out.println (" 두수의 합은 " + sum + " 입니다 "); } - PowerPoint PPT PresentationTRANSCRIPT
7 장 . 클래스 : 기능
1
public class SumTest { public static void main(String a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두 수를 더하는 부분입니다 System.out.println(" 두수의 합은 " + sum + " 입니다 "); }}
JAVA
클래스의 기능에 해당하는 부분에 관해 학습한다 .
객체를 생성할 때 수행되는 생성자에 관해 학습한다 .
생성자 오버로딩에 관해 학습한다 .
클래스의 기능을 나타내는 메소드에 관해 학습한다 .
메소드 오버로딩에 관해 학습한다 .
메소드 값 전달 기법에 관한 학습한다 .
학습목표
2
section 1 생성자 (Constructor)
section 2 생성자 오버로딩 (Overloading)
section 3 예약어 this
section 4 메소드 - 4-1 접근 한정자
- 4-2 클래스 메소드
- 4-3 final, abstract, synchronized 메소드
- 4-4 메소드 반환 값 (return value)
section 5 메소드 오버로딩 (Overloading)
section 6 메소드에 값 전달 (Argument passing) 방법
목차
3
7 장 . 클래스 : 기능
1 생성자 (Constructor)
4
생성자- 클래스로부터 객체가 생성될 때 객체의 초기화 과정을 기술하는 특수한 메소드
- 객체가 생성될 때 무조건 수행
- 객체가 생성될 때 한 번만 수행
[public/private] 클래스이름 ( 매개변수 ){............. 초기화 문장들.............}
형식
7 장 . 클래스 : 기능
1 생성자 (Constructor)
5
생성자
class Box { private int width; private int height; private int depth; private int vol; public Box(int w, int h, int d) { width = w; height = h; depth = d; }}class BoxTest { .................. Box mybox1 = new Box(10,20,30); Box mybox2 = new Box(); .................. 오류 발생 , 적합한 생성자가 없다 .
7 장 . 클래스 : 기능
1 생성자 (Constructor)
6
실습예제Box5Test.java01020304050607080910111213141516171819
class Box5 { int width; int height; int depth; public Box5(int w, int h, int d) { width = w; height = h; depth = d; }}public class Box5Test { public static void main(String args[]) { Box5 mybox1 = new Box5(10,20,30); int vol = mybox1.width * mybox1.height * mybox1.depth; System.out.println(" 박스의 부피 : " + vol); }}
3 개의 매개변수로 객체 생성
생성자로서 초기화 과정 수행
7 장 . 클래스 : 기능
1 생성자 (Constructor)
7
프로그램 설명- 05~10 : 생성자를 정의하였다 . 클래스의 이름과 동일한 생성자를 사용하였으며 ,
매개변수로 받은 값을 자신의 객체 변수에 초기화 과정을 수행하였다 . - 14 : Box5 클래스가 3 개의 매개변수를 가진 생성자를 가지고 있으므로 , 반드시 3 개의
매개변수를 지정하여 객체를 생성하여야 한다 .
7 장 . 클래스 : 기능
2 생성자 오버로딩 (Overloading)
8
같은 이름의 생성자를 여러 개 중첩 (overloading) 하여 사용할 수 있다class Box5 { int width; int height; int depth; public Box5() { width = 1; height = 1; depth = 1; } public Box5(int w) { width = w; height = 1; depth = 1; } public Box5(int w, int h) { width = w; height = h; depth = 1; }
7 장 . 클래스 : 기능
2 생성자 오버로딩 (Overloading)
9
public Box5(int w, int h, int d) { width = w; height = h; depth = d; }}public class Box5Test { ................ Box5 mybox1 = new Box5(); Box5 mybox2 = new Box5(10); Box5 mybox3 = new Box5(10,20); Box5 mybox4 = new Box5(10,20,30); ................ }}
매개변수의 개수와 형식에 따라 적합한 생성자 수행
7 장 . 클래스 : 기능
2 생성자 오버로딩 (Overloading)
10
실습예제Box6Test.java0102030405060708091011121314151617181920
class Box6 { int width; int height; int depth; double dwidth; double dheight; double ddepth; public Box6(int w, int h, int d) { width = w; height = h; depth = d; } public Box6(double w, double h, double d) { dwidth = w; dheight = h; ddepth = d; }}
두 개의 생성자를 오버로딩
두 개의 생성자를오버로딩
7 장 . 클래스 : 기능
2 생성자 오버로딩 (Overloading)
11
실습예제Box6Test.java2122232425262728293031323334353637383940
public class Box6Test { public static void main(String args[]) { Box6 mybox1 = new Box6(10,20,30); Box6 mybox2 = new Box6(10.5,20.5,30.5); Box6 mybox3 = new Box6(10.5,20.5,30); int vol1 = mybox1.width * mybox1.height * mybox1.depth; double vol2 = mybox2.dwidth * mybox2.dheight * mybox2.ddepth; double vol3 = mybox3.dwidth * mybox3.dheight * mybox3.ddepth; System.out.println (" 정수 박스의 부피 : " + vol1); System.out.println (" 실수 박스의 부피 : " + vol2); System.out.println (" 정수와 실수가 섞여있는 박스의 부피 : " + vol3); }}
생성자의 매개변수에적합한 생성자 수행
7 장 . 클래스 : 기능
2 생성자 오버로딩 (Overloading)
12
프로그램 설명- 00 : 3 개의 정수 매개변수를 가진 생성자를 선언하였다 .- 00 : 3 개의 실수 매개변수를 가진 생성자를 오버로딩하여 선언하였다 .- 00 : 3 개의 정수 매개변수를 가지고 객체를 생성하였다 . 정수 매개변수를 가진 생성자가
수행된다 .- 00~00 : 3 개의 실수 매개변수를 가지고 객체를 생성하였다 . 실수 매개변수를 가진
생성자가 수행된다 .- 00 : 정수와 실수가 섞여 있는 경우 정수가 자동 형변환되어 실수 매개변수 생성자를
수행한다 .
7 장 . 클래스 : 기능
3 예약어 this
13
This- 자바의 예약어 (reserved word)- 현재의 객체를 의미
class Box { int width; int height; int depth; public void Box(int width, int height, int depth) { width=width; height=height; depth=depth; } }
7 장 . 클래스 : 기능
3 예약어 this
14
This
class Box { int width; int height; int depth; public void Box(int width, int height, int depth) { this.width=width; this.height=height; this.depth=depth; } }
이 객체 변수를 의미
7 장 . 클래스 : 기능
3 예약어 this
15
class Box5 { int width; int height; int depth; public Box5() { this(1,1,1); } public Box5(int w) { this(w,1,1); } public Box5(int w, int h) { this(w,h,1); } public Box5(int w, int h, int d) { width = w; height = h; depth = d; }}public class Box5Test { ................ Box5 mybox1 = new Box5(); Box5 mybox2 = new Box5(10); Box5 mybox3 = new Box5(10,20); Box5 mybox4 = new Box5(10,20,30); ................ }}
같은 클래스 내의 다른 생성자 호출
7 장 . 클래스 : 기능
4 메소드
16
메소드- 객체가 할 수 있는 행동을 정의
- static : 클래스 메소드
- final : 종단 메소드
- abstract : 추상 메소드
- synchronized : 스레드의 동기화를 위한 메소드
[ 접근 한정자 ] [static/final/abstract/synchronized] 반환값타입 메소드이름 ([ 매개변수들 ]){............ 지역변수 선언 및 메소드 행위 기술............ }
형식
7 장 . 클래스 : 기능
4-1 접근 한정자4 메소드
17
메소드 선언 시 사용되는 접근 한정자- 멤버 변수 접근 한정자와 같이 public, private 가 사용
public class Test1 { public int a; int b; private int c; public void method1() { } viod method2() { } private void mothod3() { }}
public 멤버 변수 선언접근 한정자를 지정하지 않고 선언
private 멤버 변수 선언public 메소드 선언접근 한정자를 지정하지 않음
private 메소드 선언
7 장 . 클래스 : 기능
4-1 접근 한정자4 메소드
18
같은 패키지에 속해있는 클래스에서 사용하는 예
public class SamePackage { Test1 t1 = new Test1(); t1.a = 3; t1.b = 5; t1.c = 7; t1.mothod1(); t1.mothod2(); t1.mothod3(); }
접근 가능
접근 불가능접근 가능접근 가능접근 불가능접근 가능
7 장 . 클래스 : 기능
4-1 접근 한정자4 메소드
19
다른 패키지에 속해 있는 클래스에서 사용하는 예
public class OtherPackage { Test1 t2 = new Test1(); t2.a = 3; t2.b = 5; t2.c = 7; t2.mothod1(); t2.mothod2(); t2.mothod3();}
접근 가능
접근 불가능접근 불가능접근 가능접근 불가능접근 불가능
7 장 . 클래스 : 기능
4-1 접근 한정자4 메소드
20
실습예제Box7Test.java01020304050607080910111213141516
class Box7 { int width; int height; int depth; public Box7(int w, int h, int d) { width = w; height = h; depth = d; } int volume() { int vol = width * height * depth; return vol; }}
접근 한정자를 사용하지 않고 객체 변수 선언
접근 한정자를 사용하지 않고메소드 선언
7 장 . 클래스 : 기능
4-1 접근 한정자4 메소드
21
실습예제Box7Test.java171819202122232425
public class Box7Test { public static void main(String args[]) { Box7 mybox1 = new Box7(10,20,30); mybox1.width = 20; int vol1 = mybox1.volume(); System.out.println (" 정수 박스의 부피 : " + vol1); }}
객체 변수에 직접 접근하여 초기화된 변숫값을 고침
7 장 . 클래스 : 기능
4-1 접근 한정자4 메소드
22
프로그램 설명- 02~04 : 접근 한정자를 사용하지 않고 객체 변수를 선언하는 것은 보안 부분을 매우
취약하게 하는 요인이다 . Box7 클래스가 생성자를 통한 초기화와 부피를 구해서 알려주는 클래스라고 가정하면 , 외부에서 그 기능만을 사용할 수 있도록 최소한의 부분만 공개해야 하며 , 다른 부분은 접근 한정자를 이용하여 철저히 은폐하여야 한다 .
- 11~15 : 접근 한정자를 사용하지 않고 메소드가 기술되었다 . 실제 부피를 구하는 메소드의 이름은 그 클래스를 사용하는 측에서는 알 필요가 없는 정보이다 . 좀 더 철저한 보안을 위해서는 부피를 계산하는 메소드는 접근 한정자에 의해 은폐되어야 하고 , 계산된 부피만 알려주는 읽기 전용의 메소드가 필요하다 .
- 20 : 접근 한정자를 사용하지 않음으로서 발생할 수 있는 잘못 사용된 예이다 . width 객체 변수의 접근 한정자를 지정하지 않음으로서 같은 패키지에 속한 다른 클래스에서 자유롭게 그 변수의 값을 조작할 수 있다 .
7 장 . 클래스 : 기능
4-1 접근 한정자4 메소드
23
실습예제Box8Test.java01020304050607080910111213141516
class Box8 { private int width; private int height; private int depth; private int vol; public Box8(int w, int h, int d) { width = w; height = h; depth = d; volume(); } private void volume() { vol = width * height * depth; }
접근 한정자를 사용하지 않고 객체 변수 선언
부피를 구하는 메소드를private 로 선언
7 장 . 클래스 : 기능
4-1 접근 한정자4 메소드
24
실습예제Box8Test.java1718192021222324252627282930
public int getvolume() { return vol; }}public class Box8Test { public static void main(String args[]) { Box8 mybox1 = new Box8(10,20,30); // mybox1.width = 20; // int vol1 = mybox1.volume(); System.out.println (" 정수 박스의 부피 : " + mybox1.getvolume()); }}
부피의 값을 읽어오는 메소드만public 으로 선언
private 로 선언된 변수에 접근하면 오류 발생private 로 선언된 메소드에 접근하면 오류 발생
7 장 . 클래스 : 기능
4-1 접근 한정자4 메소드
25
프로그램 설명- 02~05 : 클래스 내에 선언되는 모든 객체 변수에 접근 한정자를 사용하며 , 공개될
필요가 없는 변수들은 모두 private 로 선언하여 객체 변수가 오용되는 것을 방지한다 .- 13~16 : 부피를 구하는 메소드의 이름을 공개할 필요가 없다 . private 로 메소드 선언
- 17~20 : 계산된 부피 값을 읽어오는 전용 메소드를 작성하여 public 으로 선언한다 . 이렇게 읽기 전용의 메소드를 사용함으로써 보안을 강화할 수 있다 .
- 25~26 : private 로 선언된 객체 변수와 메소드에 접근하면 오류가 발생된다 .
7 장 . 클래스 : 기능
4-2 클래스 메소드 4 메소드
26
클래스 메소드- 클래스 변수와 비슷한 특징을 가짐
class Box { int width; int height; int depth; long idNum; static long boxID = 100; static long getcurrentID() { depth++; return boxID++; }}
클래스 메소드는 클래스 변수만 사용 . depth 는 객체 변수이므로 오류 발생
7 장 . 클래스 : 기능
4-2 클래스 메소드 4 메소드
27
실습예제Box9Test.java01020304050607080910111213141516
class Box9 { private int width; private int height; private int depth; public long idNum; static long boxID = 100; static long getCurrentID() { int count = 1; boxID = boxID + count; return boxID; }}public class Box9Test { public static void main(String args[]) { Box9 mybox1 = new Box9();
클래스 메소드 선언 ( 지역 변수 사용 가능 )
클래스 변수 선언
7 장 . 클래스 : 기능
4-2 클래스 메소드 4 메소드
28
실습예제Box9Test.java171819202122232425262728
mybox1.idNum = Box9.getCurrentID(); Box9 mybox2 = new Box9(); mybox2.idNum = Box9.getCurrentID(); System.out.println ("mybox1 의 id 번호 : "+ mybox1.idNum); System.out.println ("mybox2 의 id 번호 : "+ mybox2.idNum); System.out.println (" 다음 박스의 번호는 "+ Box9.getCurrentID() + " 번 입니다 "); }}
클래스 메소드 호출( 클래스 이름 사용 )
클래스 메소드 호출( 클래스 이름 사용 )
클래스 메소드 호출( 클래스 이름 사용 )
7 장 . 클래스 : 기능
4-2 클래스 메소드 4 메소드
29
프로그램 설명- 07~12 : static 을 사용하여 클래스 메소드를 선언하였다 . 클래스 메소드 내에서는 객체
변수를 사용할 수 없으나 , 클래스 메소드 내부에서만 사용하는 지역 변수는 선언하여 사용할 수 있다 .
- 17, 19, 24~26 : 클래스 메소드의 호출은 클래스 이름을 통해서 하는 것이 원칙이다 . 객체 이름을 통해서도 (mybox1.getCurrentID()) 도 접근이 가능하다 .
7 장 . 클래스 : 기능
4-3 final, abstract, synchronized 메소드4 메소드
30
final 로 선언된 메소드- 서브 클래스에서 오버라이딩 (overriding) 될 수 없음을 의미
abstract 로 선언된 메소드- 추상 메소드로써 추상 클래스 내에서 선언
- 추상 메소드는 선언 부분만 가지고 몸체 부분은 가질 수 없음
- 몸체 부분은 서브 클래스에서 오버라이딩됨
synchronized 메소드- 스레드를 동기화할 수 있는 기법을 제공하기 위해 사용
7 장 . 클래스 : 기능
4-4 메소드 반환 값 (return value)4 메소드
31
메소드 선언부에는 그 메소드 반환 값의 자료형이 지정되어야 함
반환 값이 없을 경우에는 void 로 지정
void 형이 아닌 메소드- 반드시 지정된 형과 같은 값을 return 문을 사용하여 반환
7 장 . 클래스 : 기능
4-4 메소드 반환 값 (return value)4 메소드
32
public int sum(int a, int b) { int c; c = a + b; return c; // 정수 값을 반환}
public Box volume_compute(Box instance_box) { .................. Box v_box = new Box(); v_box.width = instance_box.width; v_box.height = instance_box.height; v_box.depth = instance_box.depth; v_box.volume= v_box.width * v_box.height * v_box.depth; return v_box; // Box 객체를 반환}
7 장 . 클래스 : 기능
5 메소드 오버로딩 (Overloading)
33
메소드 오버로딩- 객체지향 언어의 특징 중에 하나인 다형성 (polymorphism) 을 제공
- 하나의 메소드 이름으로 다양한 연산을 수행할 수 있는 방법을 제공
- 중첩된 메소드가 호출되면 매개변수의 형과 개수를 비교하여 적합한 메소드가 실행
7 장 . 클래스 : 기능
5 메소드 오버로딩 (Overloading)
34
실습예제Box10Test.java01020304050607080910111213141516171819
class Box10 { private int i_volume; private double d_volume; public Box10(int w, int h, int d) { volume(w, h, d); } public Box10(double w, double h, double d) { volume(w, h, d); } private void volume(int w, int h, int d) { i_volume = w * h * d; } private void volume(double w, double h, double d) { d_volume = w * h * d; }
데이터형에 적합한 메소드 실행
데이터형에 적합한 메소드 실행
같은 이름의 메소드 오버로딩 선언
7 장 . 클래스 : 기능
5 메소드 오버로딩 (Overloading)
35
실습예제Box10Test.java2021222324252627282930313233343536373839404142
public int get_i_volume() { return i_volume; } public double get_d_volume() { return d_volume; }}public class Box10Test { public static void main(String args[]) { Box10 mybox1 = new Box10(10,20,30); Box10 mybox2 = new Box10(10.5,20.5,30.5); Box10 mybox3 = new Box10(10.5,20.5,30); System.out.println (" 정수 박스의 부피 : " + mybox1.get_i_volume()); System.out.println (" 실수 박스의 부피 : " + mybox2.get_d_volume()); System.out.println (" 정수와 실수가 섞여있는 박스의 부피 : " + mybox3.get_d_volume()); }}
7 장 . 클래스 : 기능
5 메소드 오버로딩 (Overloading)
36
프로그램 설명- 06, 10 : 생성자에서 같은 이름의 메소드를 호출하고 있지만 , 매개변수의 형에 따라
적합한 메소드가 수행된다 . - 12~19 : 두 개의 메소드를 오버로딩하여 선언하였다 . 매개변수의 개수는 같지만 , 형이
달라서 오버로딩될 수 있다 .
7 장 . 클래스 : 기능
5 메소드 오버로딩 (Overloading)
37
실습예제OverloadTest.java01020304050607080910111213141516171819
class Overload{ void calc(){ System.out.println(" 매개변수가 없습니다 ."); } void calc(int width){ System.out.println(" 정사각형의 넓이 : " + width * width); } void calc(int width, int height){ System.out.println(" 직사각형의 넓이 : " + width * height); } void calc(int width, int height, int depth){ System.out.println(" 직육면체의 부피 : " + width * height * depth); }}
public class OverloadTest {
메소드를 오버로딩으로 선언
메소드를 오버로딩으로 선언
메소드를 오버로딩으로 선언
메소드를 오버로딩으로 선언
7 장 . 클래스 : 기능
5 메소드 오버로딩 (Overloading)
38
실습예제OverloadTest.java2021222324252627282930313233343536373839404142
public static void main(String args[]){ Overload ol = new Overload(); int input[] = new int[args.length]; for(int i=0; i<args.length; i++) input[i] = Integer.parseInt(args[i]); switch (args.length){ case 0: ol.calc(); break; case 1: ol.calc(input[0]); break; case 2: ol.calc(input[0], input[1]); break; case 3: ol.calc(input[0], input[1], input[2]); break; default: System.out.println(" 인수의 개수가 많습니다 ."); } }}
오버로딩 메소드 호출
오버로딩 메소드 호출
오버로딩 메소드 호출
오버로딩 메소드 호출
7 장 . 클래스 : 기능
5 메소드 오버로딩 (Overloading)
39
프로그램 설명- 02~16 : 넓이와 부피를 구하는 메소드 calc() 를 오버로딩으로 선언하였다 . 메소드가
호출되면 매개변수의 개수에 따라 적합한 메소드가 수행된다 .- 27, 30, 33, 36 : 적합한 메소드가 호출되어 수행된다 .
7 장 . 클래스 : 기능
6 메소드에 값 전달 (Argument passing) 방법
40
실 매개변수와 형식 매개변수로 기본 자료형이 사용되는 경우
237 page
7 장 . 클래스 : 기능
6 메소드에 값 전달 (Argument passing) 방법
41
매개변수와 형식 매개변수로 참조 자료형이 사용되는 경우
238 page
7 장 . 클래스 : 기능
6 메소드에 값 전달 (Argument passing) 방법
42
실습예제ArgumentTest1.java010203040506070809101112131415
class Argument { public void change(int i, int j[], StringBuffer sb) { i = 20; j[3] = 400; sb.append(" 화이팅 자바 ."); } public void display(int i, int j[], StringBuffer sb) { System.out.println(" 객체 변수 i 의 값 : " + i); System.out.print(" 배열의 값 : "); for(int index = 0; index < j.length; index++) System.out.print(j[index] + " "); System.out.println(""); System.out.println(" 문자열 sb 의 값 : " + sb); }}
기본 자료형의 값을 변환배열 ( 참조 자료형 ) 의 요소를 변환
문자열 ( 참조 자료형 ) 뒤에 문자열을 첨가매개변수로 받은데이터를 출력하는메소드
7 장 . 클래스 : 기능
6 메소드에 값 전달 (Argument passing) 방법
43
실습예제ArgumentTest1.java1617181920212223242526272829
class ArgumentTest1 { public static void main(String args[]) { Argument d = new Argument(); int a = 10; int b[] = { 1, 2, 3, 4 }; StringBuffer c = new StringBuffer(" 배우기 쉽죠 ?"); System.out.println(" 첫번째 display() 메소드 호출 "); d.display(a, b, c); d.change(a, b, c); System.out.println("============================="); System.out.println(" 값을 변환한 다음 두번째 display() 호출 "); d.display(a, b, c); }}
3 개의 매개변수로 display() 호출3 개의 매개변수로 change() 호출
7 장 . 클래스 : 기능
6 메소드에 값 전달 (Argument passing) 방법
44
프로그램 설명- 02 : 이 메소드에서는 매개변수로 받은 값을 변환시키고 있다 . 첫 번째 값은 기본
자료형의 값이고 , 나머지 두 개의 값은 참조 자료형의 값이다 . 기본 자료형의 경우 값이 복사되기 때문에 변화를 시켜도 호출한 쪽의 데이터는 변하지 않는 반면 , 참조 자료형의경우 주소가 복사되기 때문에 데이터 값을 변환시키면 호출한 쪽의 데이터도 변하게된다 .
- 07 : 변환되기 전과 변환된 후의 값을 출력시켜주는 메소드
- 24 : 값을 변환시키는 change() 메소드를 호출하였다 .- 27 : change() 메소드 호출 후에 다시 출력하였다 .
7 장 . 클래스 : 기능
6 메소드에 값 전달 (Argument passing) 방법
45
생성자 ① 생성자는 클래스로부터 객체가 생성될 때 초기화 과정을 수행하는 메소드이다 .② 생성자를 생성자 메소드로 부르기도 한다 .③ 생성자의 이름은 클래스 이름과 동일해야 한다 .
생성자 오버로딩 ① 하나의 클래스에 같은 이름의 생성자를 중첩하여 선언하는 것을 생성자
오버로딩이라 한다 .② 오버로딩되는 생성자는 매개변수의 개수와 타입이 반드시 달라야 한다 .③ 생성자 오버로딩은 객체지향의 다형성을 구현한다 .
학습정리
46
예약어 this ① this 예약어는 현재의 객체를 의미한다 .② this 예약어는 클래스내에서 다른 생성자를 호출할 때도 사용된다 .③ this 예약어를 사용함으로서 의미있는 변수명을 사용할 수 있다 .
메소드와 오버로딩 ① 메소드는 클래스의 핵심인 기능을 나타내는 부분이다 .② 메소드의 접근 한정자는 객체변수의 접근 한정자의 의미와 같다 .③ 클래스 메소드는 클래스 이름을 통해 접근 가능하며 , 클래스 메소드내에서는
클래스 변수만을 사용할 수 있다 .④ 메소드는 기본 자료형 뿐만 아니라 참조자료형인 객체도 반환할 수 있다 .⑤ 메소드 역시 생성자와 같이 중첩 사용될 수 있으며 , 중첩된 메소드는 매개변수의
개수와 타입이 반드시 달라야 한다 .
학습정리
47
메소드에 값 전달 기법 ① 자바는 메소드 호출 시 매개변수에 값을 전하기 위해 값 - 전달 (call by value)
방법을 사용한다 .② 값 - 전달 기법은 실매개 변수의 값을 형식매개변수에 복사하는 기법이다 .③ 값 - 전달 기법에서 사용되는 매개변수의 형이 기본 자료형일 경우에는 실제 값이
복사되어 전달되지만 , 참조자료형인 경우에는 주소가 복사되어 전달된다 .④ 참조자료형인 경우에 주소가 전달되므로 결국 실매개변수와 형식매개변수가 같은
객체를 가리키게 된다 . 이 경우 형식매개변수의 값이 변화되면 실매개 변수의 값도 변화된다 .
학습정리
48
7 장 . 클래스 : 기능
49
수고하셨습니다 .질문 있습니까 ?