Upload
kathy
View
68
Download
0
Embed Size (px)
DESCRIPTION
6 장 . 클래스 : 속성. 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 Presentation
Citation preview
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
클래스의 속성에 해당하는 부분에 관해 학습한다 .
클래스의 일반구조와 클래스 선언부분에 대해 학습한다 .
클래스로부터 객체를 생성하는 과정을 학습한다 .
클래스의 속성에 해당하는 멤버 변수에 관해 학습한다 .
캡슐화를 지원하는 멤버 변수 접근 한정자에 관해 학습한다 .
변수의 유효범위에 관해 학습한다 .
학습목표
2
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
6 장 . 클래스 : 속성
1-1 객체지향 이론과 역사1 클래스의 일반 구조
4
클래스의 구성- 속성에 해당하는 멤버 변수 부분
- 기능에 해당하는 생성자 ( 생성자 메소드라고도 부름 )
- 메소드 정의
187page
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; }}
속성
생성자
메소드
기능
6 장 . 클래스 : 속성
2 클래스 선언
6
클래스 선언
클래스의 한정자- Public : 모든 클래스에서 접근 가능
- 한정자 사용 안 함 : 패키지 내의 클래스에서만 접근 가능
- Final : 서브 클래스를 가질 수 없는 클래스
- 추상 (abstract) : 객체를 생성할 수 없는 클래스
[public/final/abstract] class Class-name {.................. 클래스의 속성과 기능을 기술.........}
형식
6 장 . 클래스 : 속성
2 클래스 선언
7
속성만 가지는 클래스
class Box { int width; int height; int depth;}
형식
속성
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); }}
형식
속성
메소드
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); }}
형식속성
메소드
메소드
6 장 . 클래스 : 속성
3 객체의 생성
10
객체의 선언
클래스명 객체 변수 ;형식
Box mybox1;Avg student1;String name;
6 장 . 클래스 : 속성
3 객체의 생성
11
객체의 생성
객체 변수 = new 클래스명 ;형식
Box mybox1;mybox1 = new Box(10,20,30);
6 장 . 클래스 : 속성
3 객체의 생성
12
객체의 선언과 생성
클래스명 객체 변수 = new 클래스명 ();형식
Box mybox1 = new Box(10, 20, 30);Avg student1 = new Avg();String name = new String(" 홍길동 ");
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
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 클래스로부터 객체 생성
객체의 속성에 값을 배정
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 + " 입니다 .");
}}
6 장 . 클래스 : 속성
3 객체의 생성
16
프로그램 설명- 01 : 클래스 Box1 은 속성만 가진 클래스이다 .
- 08~09 : 클래스 Box1 에서 객체 두 개를 생성하였다 .
- 12~18 : 각 객체의 속성에 특정 값을 저장하였다 .
- 20~24 : 각 객체의 속성값을 이용하여 박스의 부피를 계산하였다 .
6 장 . 클래스 : 속성
4 멤버 변수
17
멤버 변수- 클래스에서 메소드 외부에 선언된 변수
멤버 변수의 구분
멤버 변수의 선언
[public/private] [static/final] 변수타입 변수명 ;형식
196 page
6 장 . 클래스 : 속성
4-1 객체 변수 4 멤버 변수
18
객체 변수- 객체가 가질 수 있는 특성을 표현
............int my_count1 = 100;int my_count2 = my_count1;Box mybox1 = new Box();Box mybox2 = mybox1;............
6 장 . 클래스 : 속성
4-1 객체 변수 4 멤버 변수
19
배정문에서의 객체 변수의 다른 특성
198 page
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();
속성으로 값을 지정
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 속성값 변경
6 장 . 클래스 : 속성
4-1 객체 변수 4 멤버 변수
22
프로그램 설명- 02~04 : 클래스의 속성으로 변수의 형과 변수명만 지정될 수도 있고 , 직접 값을 지정할
수도 있다 .
- 08~12 : 기본 자료형인 정수 값을 가지는 변수는 배정문을 사용하면 값이 직접 복사되어 한 변수의 값이 변화되어도 다른 변수에 영향을 미치지 않는다 .
- 13~26 : 참조 자료형인 객체를 가지는 객체 변수를 다른 객체 변수에 배정하게 되면 , 두 개의 객체 변수는 같은 객체를 가리키게 된다 . 이 경우 한 객체 변수를 통해서 객체의 속성을 변경하면 , 다른 객체 변수를 통해서 접근하는 값도 변경되게 된다 .
6 장 . 클래스 : 속성
4-2 클래스 변수4 멤버 변수
23
클래스 변수- static 을 사용하여 선언
- 전역변수 (global variable) 의 개념
static 변수형 변수명 ;형식
static long boxid;static double degree;
6 장 . 클래스 : 속성
4-2 클래스 변수4 멤버 변수
24
클래스 변수의 사용
201 page
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; }}
클래스 변수 선언
메소드가 호출될 때마다 클래스 변숫값 증가
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 + " 입니다 .");
}}
클래스 변수에 접근할 때는클래스 명을 통해서 접근
6 장 . 클래스 : 속성
4-2 클래스 변수4 멤버 변수
27
프로그램 설명- 06 : 클래스의 속성으로 클래스 변수를 선언하였다 . 이 변수는 이 클래스로부터 생성된
객체들에 의해 공유되는 변수이다 .
- 26 : 클래스 변수는 클래스 명을 통해서 접근하는 것이 원칙이다 .
6 장 . 클래스 : 속성
4-3 종단 (final) 변수4 멤버 변수
28
종단 변수- final 을 사용하여 선언하며 변할 수 없는 상숫값을 갖음
final 변수형 = 변숫값 ;형식
final int MAX =100;final int MIN = 1;
6 장 . 클래스 : 속성
4-4 멤버 변수 접근 방법4 멤버 변수
29
클래스 변수와 객체 변수에 접근하기 위해서는 “ .” 을 이용
클래스 변수 접근 방법
클래스이름 . 클래스변수 or 객체이름 . 클래스변수형식
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; ....................
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; ...............
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; ...............
오류 발생
6 장 . 클래스 : 속성
5-3 한정자 없음5 멤버 변수 접근 한정자
33
한정자를 지정하지 않을 경우 같은 패키지에 속한 클래스에서는 제한 없이 사용이 가능
6 장 . 클래스 : 속성
6 변수의 유효범위 (Scope)
34
변수의 유효범위- 그 변수가 사용될 수 있는 영역을 의미
유효범위 측면에서의 변수들을 구분- 멤버 변수
- 메소드 매개변수와 지역변수
- 예외 처리기 매개변수 (exception handler parameter)
멤버 변수- 클래스 내에 메소드 밖에서 선언된 변수를 의미
메소드 지역변수와 메소드 매개변수는 메소드 내에서만 사용할 수 있는 변수
6 장 . 클래스 : 속성
6 변수의 유효범위 (Scope)
35
변수의 유효범위
207 page
클래스의 일반 구조① 클래스는 “속성 + 기능”으로 구성된다 .
② 클래스에는 기능을 나타내는 생성자 ( 또는 생성자 메소드 ) 와 메소드가 있다 .
클래스 선언 ① 클래스 선언 시 한정자를 사용할 수 있다 .
② 클래스에는 속성만 나올 수도 있고 , 메소드만 있을 수도 있다 .
객체의 생성 ① 객체의 선언과 생성과정을 통해 객체를 사용할 수 있다 .
② 객체를 생성하기 위해 new 라는 예약어를 사용한다 .
학습정리
36
멤버 변수 ① 객체의 속성을 나타내는 멤버 변수에는 객체 변수 , 클래스 변수 , 종단 변수가 있
다 .
② 객체 변수는 특성에 따라 기본 자료형을 가지는 객체 변수와 참조 자료형을 가지는 객체 변수가 있다 .
③ 기본 자료형을 가진 객체 변수는 실제 값을 가진다 .
④ 참조 자료형을 가진 객체 변수는 값이 아닌 객체의 주소를 가진다 .
⑤ 클래스 변수는 그 클래스로부터 생성된 객체들이 공유하는 변수이다 .
⑥ 종단 변수는 상수를 정의하는데 사용되며 , 주로 변수명을 대문자로 사용하는 것이 관례이다 .
⑦ 멤버 변수에 접근하는 방법은 객체 변수는 객체명을 , 클래스 변수는 클래스명을 사용하여 접근한다 .
학습정리
37
멤버 변수 접근 한정자 ① 자바는 멤버 변수 접근 한정자를 제공하여 객체지향의 주요 특성인 캡슐화와
정보은폐를 제공한다 .
② public 한정자는 접근에 제한이 없는 한정자이다 . 프로그램에서는 보안상 public
의 사용을 최소화해야 한다 .
③ private 한정자는 그 클래스 내부에서만 사용할 수 있는 한정자이다 .
④ 한정자를 지정하지 않고 사용하는 경우는 같은 패키지에 속한 클래스에서는 제한없이 사용할 수 있다 .
변수의 유효범위 ① 변수의 유효범위는 그 변수가 사용될 수 있는 영역을 의미한다 .
학습정리
38
6 장 . 클래스 : 속성
39
수고하셨습니다 .질문 있습니까 ?