Download pptx - 6 장 . 클래스 : 속성

Transcript
Page 1: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

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

Page 2: 6 장 .  클래스  :  속성

클래스의 속성에 해당하는 부분에 관해 학습한다 .

클래스의 일반구조와 클래스 선언부분에 대해 학습한다 .

클래스로부터 객체를 생성하는 과정을 학습한다 .

클래스의 속성에 해당하는 멤버 변수에 관해 학습한다 .

캡슐화를 지원하는 멤버 변수 접근 한정자에 관해 학습한다 .

변수의 유효범위에 관해 학습한다 .

학습목표

2

Page 3: 6 장 .  클래스  :  속성

section 1 클래스의 일반 구조

section 2 클래스 선언

section 3 객체의 생성

section 4 멤버 변수 - 4-1 객체 변수

- 4-2 클래스 변수

- 4-3 종단 (final) 변수

- 4-4 멤버 변수 접근 방법

section 5 멤버 변수 접근 한정자 - 5-1 public

- 5-2 private

- 5-3 한정자 없음

section 6 변수의 유효범위 (Scope)

목차

3

Page 4: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

1-1 객체지향 이론과 역사1 클래스의 일반 구조

4

클래스의 구성- 속성에 해당하는 멤버 변수 부분

- 기능에 해당하는 생성자 ( 생성자 메소드라고도 부름 )

- 메소드 정의

187page

Page 5: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

1 클래스의 일반 구조

5

실습예제Box_Sample.java

0102030405060708091011121314151617

public class Box_Sample { int width; int height; int depth; int volume; Box_Sample(int w, int h, int d) { width = w; height = h; depth = d; } int volume_compute() { volume = width * height * depth; return volume; }}

속성

생성자

메소드

기능

Page 6: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

2 클래스 선언

6

클래스 선언

클래스의 한정자- Public : 모든 클래스에서 접근 가능

- 한정자 사용 안 함 : 패키지 내의 클래스에서만 접근 가능

- Final : 서브 클래스를 가질 수 없는 클래스

- 추상 (abstract) : 객체를 생성할 수 없는 클래스

[public/final/abstract] class Class-name {.................. 클래스의 속성과 기능을 기술.........}

형식

Page 7: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

2 클래스 선언

7

속성만 가지는 클래스

class Box { int width; int height; int depth;}

형식

속성

Page 8: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

2 클래스 선언

8

속성과 메소드를 가지는 클래스

class Box { int width; int height; int depth; public void volume() { int vol; vol = width * height * depth; System.out.println("Volume is "+vol); }}

형식

속성

메소드

Page 9: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

2 클래스 선언

9

속성 , 생성자 , 메소드를 가지는 클래스

class Box { int width; int height; int depth; public void Box(int w, int h, int d) { width=w; height=h; depth=d; } public void volume() { // 메소드 int vol; vol = width * height * depth; System.out.println("Volume is "+vol); }}

형식속성

메소드

메소드

Page 10: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

3 객체의 생성

10

객체의 선언

클래스명 객체 변수 ;형식

Box mybox1;Avg student1;String name;

Page 11: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

3 객체의 생성

11

객체의 생성

객체 변수 = new  클래스명 ;형식

Box mybox1;mybox1 = new Box(10,20,30);

Page 12: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

3 객체의 생성

12

객체의 선언과 생성

클래스명 객체 변수 = new  클래스명 ();형식

Box mybox1 = new Box(10, 20, 30);Avg student1 = new Avg();String name = new String(" 홍길동 ");

Page 13: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

3 객체의 생성

13

객체의 선언과 생성class Box { int width; int height; int depth;}class MyBox {............ Box mybox1; Box mybox2; mybox1 = new Box(); mybox2 = new Box();.............

193 page

Page 14: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

3 객체의 생성

14

실습예제Box1Test.java

010203040506070809101112131415161718

class Box1 { int width; int height; int depth;}public class Box1Test { public static void main(String args[]) { Box1 mybox1 = new Box1(); Box1 mybox2 = new Box1(); int vol1, vol2;

mybox1.width = 20; mybox1.height = 40; mybox1.depth = 15;

mybox2.width = 10; mybox2.height = 20; mybox2.depth = 30;

객체의 속성만 가진 클래스

Box1 클래스로부터 객체 생성

객체의 속성에 값을 배정

Page 15: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

3 객체의 생성

15

실습예제Box1Test.java

1920212223242526

vol1 = mybox1.width * mybox1.height * mybox1.depth;

System.out.println(" 첫번째 박스의 부피는 " + vol1 + " 입니다 .");

vol2 = mybox2.width * mybox2.height * mybox2.depth;

System.out.println(" 두 번째 박스의 부피는 " + vol2 + " 입니다 .");

}}

Page 16: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

3 객체의 생성

16

프로그램 설명- 01 :  클래스 Box1 은 속성만 가진 클래스이다 . 

- 08~09 :  클래스 Box1 에서 객체 두 개를 생성하였다 . 

- 12~18 :  각 객체의 속성에 특정 값을 저장하였다 . 

- 20~24 :  각 객체의 속성값을 이용하여 박스의 부피를 계산하였다 . 

Page 17: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4 멤버 변수

17

멤버 변수- 클래스에서 메소드 외부에 선언된 변수

멤버 변수의 구분

멤버 변수의 선언

[public/private] [static/final]  변수타입 변수명 ;형식

196 page

Page 18: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4-1 객체 변수 4 멤버 변수

18

객체 변수- 객체가 가질 수 있는 특성을 표현

............int my_count1 = 100;int my_count2 = my_count1;Box mybox1 = new Box();Box mybox2 = mybox1;............

Page 19: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4-1 객체 변수 4 멤버 변수

19

배정문에서의 객체 변수의 다른 특성

198 page

Page 20: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4-1 객체 변수 4 멤버 변수

20

실습예제Box2Test.java

010203040506070809101112131415

class Box2 { int width=10; int height=20; int depth=30;}public class Box2Test { public static void main(String args[]) { int myint1 = 100; int myint2 = myint1;

System.out.println(" 첫 번째 값 : " +

myint1 + " 두 번째 값 : " + myint2);

myint1 = 200;

System.out.println(" 첫 번째 값 : " +

myint1 + " 두 번째 값 : " + myint2);

Box2 mybox1 = new Box2();

속성으로 값을 지정

Page 21: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4-1 객체 변수 4 멤버 변수

21

실습예제Box2Test.java

16171819202122232425262728

Box2 mybox2 = mybox1; mybox1.width = 20; System.out.println("mybox1.width : " + mybox1.width); System.out.println("mybox2.width : " + mybox2.width); mybox2.depth = 123; System.out.println("mybox1.depth : " + mybox1.depth); System.out.println("mybox2.depth : " + mybox2.depth); }}

같은 값이 출력

객체 변수에 객체 변수를 배정

mybox1의 width 속성값 변경

같은 값이 출력

mybox2의 depth 속성값 변경

Page 22: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4-1 객체 변수 4 멤버 변수

22

프로그램 설명- 02~04 :  클래스의 속성으로 변수의 형과 변수명만 지정될 수도 있고 ,  직접 값을 지정할

수도 있다 .

- 08~12 :  기본 자료형인 정수 값을 가지는 변수는 배정문을 사용하면 값이 직접 복사되어 한 변수의 값이 변화되어도 다른 변수에 영향을 미치지 않는다 .

- 13~26 :  참조 자료형인 객체를 가지는 객체 변수를 다른 객체 변수에 배정하게 되면 ,  두 개의 객체 변수는 같은 객체를 가리키게 된다 .  이 경우 한 객체 변수를 통해서 객체의 속성을 변경하면 ,  다른 객체 변수를 통해서 접근하는 값도 변경되게 된다 .

Page 23: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4-2 클래스 변수4 멤버 변수

23

클래스 변수- static 을 사용하여 선언

- 전역변수 (global variable) 의 개념

static  변수형 변수명 ;형식

static long boxid;static double degree;

Page 24: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4-2 클래스 변수4 멤버 변수

24

클래스 변수의 사용

201 page

Page 25: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4-2 클래스 변수4 멤버 변수

25

실습예제Box3Test.java

01020304050607080910

class Box3 { int width; int height; int depth; long idNum; static long boxID = 0; public void increment() { idNum = ++boxID; }}

클래스 변수 선언

메소드가 호출될 때마다 클래스 변숫값 증가

Page 26: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4-2 클래스 변수4 멤버 변수

26

실습예제Box3Test.java

111213141516171819202122232425262728

class Box3Test { public static void main(String args[]) { Box3 mybox1 = new Box3(); Box3 mybox2 = new Box3(); Box3 mybox3 = new Box3(); Box3 mybox4 = new Box3(); mybox1.increment(); mybox2.increment(); mybox3.increment(); mybox4.increment();

System.out.println("mybox1 의 id 번호 : " + mybox1.idNum);

System.out.println("mybox2 의 id 번호 : " + mybox2.idNum);

System.out.println("mybox3 의 id 번호 : " + mybox3.idNum);

System.out.println("mybox4 의 id 번호 : " + mybox4.idNum);

System.out.println(" 전체 박스의 개수는 "

+ Box3.boxID + " 입니다 .");

}}

클래스 변수에 접근할 때는클래스 명을 통해서 접근

Page 27: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4-2 클래스 변수4 멤버 변수

27

프로그램 설명- 06 :  클래스의 속성으로 클래스 변수를 선언하였다 .  이 변수는 이 클래스로부터 생성된

객체들에 의해 공유되는 변수이다 .

- 26 :  클래스 변수는 클래스 명을 통해서 접근하는 것이 원칙이다 . 

Page 28: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4-3 종단 (final) 변수4 멤버 변수

28

종단 변수- final 을 사용하여 선언하며 변할 수 없는 상숫값을 갖음

final  변수형 =  변숫값 ;형식

final int MAX =100;final int MIN = 1;

Page 29: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4-4 멤버 변수 접근 방법4 멤버 변수

29

클래스 변수와 객체 변수에 접근하기 위해서는 “ .” 을 이용

클래스 변수 접근 방법

클래스이름 . 클래스변수 or  객체이름 . 클래스변수형식

Page 30: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

4-4 멤버 변수 접근 방법4 멤버 변수

30

객체 변수 접근 방법

객체이름 . 객체변수형식

class A { int aa; int bb; int cc; static int s = 0;}class ATest { public static void main(String args[]) { A obja = new A(); obja.aa = 4; obja.bb = obja.aa * 2; obja.cc = A.s; ....................

Page 31: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

5-1 public5 멤버 변수 접근 한정자

31

클래스 내의 멤버 변수 접근을 제한할 수 있는 방법으로 접근 한정자를 제공

public 으로 선언된 객체 변수는 항상 접근 가능하다는 것을 의미

class Box3 { public int width; public int height; public int depth; public long idNum; static long boxID = 0; public void increment() { idNum = ++boxID; }} .................. Box3 mybox1 = new Box3(); mybox1.width = 7; mybox2.depth = 20; ...............

Page 32: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

5-2 private5 멤버 변수 접근 한정자

32

private 로 선언된 객체 변수는 소속된 클래스 내에서만 사용

class Box3 { private int width; private int height; private int depth; private long idNum; static long boxID = 0; public void increment() { idNum = ++boxID; }}

.................. Box3 mybox1 = new Box3(); mybox1.width = 7; mybox2.depth = 20; ...............

오류 발생

Page 33: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

5-3 한정자 없음5 멤버 변수 접근 한정자

33

한정자를 지정하지 않을 경우 같은 패키지에 속한 클래스에서는 제한 없이 사용이 가능

Page 34: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

6 변수의 유효범위 (Scope)

34

변수의 유효범위- 그 변수가 사용될 수 있는 영역을 의미

유효범위 측면에서의 변수들을 구분- 멤버 변수

- 메소드 매개변수와 지역변수

- 예외 처리기 매개변수 (exception handler parameter)

멤버 변수- 클래스 내에 메소드 밖에서 선언된 변수를 의미

메소드 지역변수와 메소드 매개변수는 메소드 내에서만 사용할 수 있는 변수

Page 35: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

6 변수의 유효범위 (Scope)

35

변수의 유효범위

207 page

Page 36: 6 장 .  클래스  :  속성

클래스의 일반 구조① 클래스는 “속성 + 기능”으로 구성된다 .

② 클래스에는 기능을 나타내는 생성자 ( 또는 생성자 메소드 ) 와 메소드가 있다 .

클래스 선언 ① 클래스 선언 시 한정자를 사용할 수 있다 .

② 클래스에는 속성만 나올 수도 있고 , 메소드만 있을 수도 있다 .

객체의 생성 ① 객체의 선언과 생성과정을 통해 객체를 사용할 수 있다 .

② 객체를 생성하기 위해 new 라는 예약어를 사용한다 .

학습정리

36

Page 37: 6 장 .  클래스  :  속성

멤버 변수 ① 객체의 속성을 나타내는 멤버 변수에는 객체 변수 , 클래스 변수 , 종단 변수가 있

다 .

② 객체 변수는 특성에 따라 기본 자료형을 가지는 객체 변수와 참조 자료형을 가지는 객체 변수가 있다 .

③ 기본 자료형을 가진 객체 변수는 실제 값을 가진다 .

④ 참조 자료형을 가진 객체 변수는 값이 아닌 객체의 주소를 가진다 .

⑤ 클래스 변수는 그 클래스로부터 생성된 객체들이 공유하는 변수이다 .

⑥ 종단 변수는 상수를 정의하는데 사용되며 , 주로 변수명을 대문자로 사용하는 것이 관례이다 .

⑦ 멤버 변수에 접근하는 방법은 객체 변수는 객체명을 , 클래스 변수는 클래스명을 사용하여 접근한다 .

학습정리

37

Page 38: 6 장 .  클래스  :  속성

멤버 변수 접근 한정자 ① 자바는 멤버 변수 접근 한정자를 제공하여 객체지향의 주요 특성인 캡슐화와

정보은폐를 제공한다 .

② public 한정자는 접근에 제한이 없는 한정자이다 . 프로그램에서는 보안상 public

의 사용을 최소화해야 한다 .

③ private 한정자는 그 클래스 내부에서만 사용할 수 있는 한정자이다 .

④ 한정자를 지정하지 않고 사용하는 경우는 같은 패키지에 속한 클래스에서는 제한없이 사용할 수 있다 .

변수의 유효범위 ① 변수의 유효범위는 그 변수가 사용될 수 있는 영역을 의미한다 .

학습정리

38

Page 39: 6 장 .  클래스  :  속성

6 장 . 클래스 : 속성

39

수고하셨습니다 .질문 있습니까 ?


Recommended