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 + " 입니다 "); 1
학습목표 클래스의속성에해당하는부분에관해학습한다. 클래스의일반구조와클래스선언부분에대해학습한다. 클래스로부터객체를생성하는과정을학습한다. 클래스의속성에해당하는멤버변수에관해학습한다. 캡슐화를지원하는멤버변수접근한정자에관해학습한다. 변수의유효범위에관해학습한다. 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
1 클래스의일반구조 1-1 객체지향이론과역사 클래스의구성 - 속성에해당하는멤버변수부분 - 기능에해당하는생성자 ( 생성자메소드라고도부름 ) - 메소드정의 187page 4
1 클래스의일반구조 실습예제 Box_Sample.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 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; 생성자 메소드 기능 5
2 클래스선언 클래스선언 형식 [public/final/abstract] class Class-name {...... 클래스의속성과기능을기술... 클래스의한정자 - Public : 모든클래스에서접근가능 - 한정자사용안함 : 패키지내의클래스에서만접근가능 - Final : 서브클래스를가질수없는클래스 - 추상 (abstract) : 객체를생성할수없는클래스 6
2 클래스선언 속성만가지는클래스 형식 class Box { int width; int height; int depth; 속성 7
2 클래스선언 속성과메소드를가지는클래스 형식 class Box { int width; int height; 속성 int depth; public void volume() { int vol; vol = width * height * depth; System.out.println("Volume is "+vol); 메소드 8
2 클래스선언 속성, 생성자, 메소드를가지는클래스 형식 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); 메소드 메소드 9
3 객체의생성 객체의선언 형식 클래스명객체변수 ; Box mybox1; Avg student1; String name; 10
3 객체의생성 객체의생성 형식 객체변수 = new 클래스명 ; Box mybox1; mybox1 = new Box(10,20,30); 11
3 객체의생성 객체의선언과생성 형식 클래스명객체변수 = new 클래스명 (); Box mybox1 = new Box(10, 20, 30); Avg student1 = new Avg(); String name = new String(" 홍길동 "); 12
3 객체의생성 실습예제 Box1Test.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 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 클래스로부터객체생성 객체의속성에값을배정 13
3 객체의생성 실습예제 Box1Test.java 19 20 21 22 23 24 25 26 vol1 = mybox1.width * mybox1.height * mybox1.depth; System.out.println(" 첫번째박스의부피는 " + vol1 + " 입니다."); vol2 = mybox2.width * mybox2.height * mybox2.depth; System.out.println(" 두번째박스의부피는 " + vol2 + " 입니다."); 14
4 멤버변수 멤버변수 - 클래스에서메소드외부에선언된변수 멤버변수의구분 멤버변수의선언 196 page 형식 [public/private] [static/final] 변수타입변수명 ; 15
4 멤버변수 4-1 객체변수 객체변수 - 객체가가질수있는특성을표현... int my_count1 = 100; int my_count2 = my_count1; Box mybox1 = new Box(); Box mybox2 = mybox1;... 16
4 멤버변수 4-1 객체변수 배정문에서의객체변수의다른특성 198 page 17
4 멤버변수 4-1 객체변수 실습예제 Box2Test.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 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(); 18
4 멤버변수 4-1 객체변수 실습예제 Box2Test.java 16 17 18 19 20 21 22 23 24 25 26 27 28 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 속성값변경 같은값이출력 19
4 멤버변수 4-1 객체변수 20
4 멤버변수 4-2 클래스변수 클래스변수 - static 을사용하여선언 - 전역변수 (global variable) 의개념 형식 static 변수형변수명 ; static long boxid; static double degree; 21
4 멤버변수 4-2 클래스변수 클래스변수의사용 201 page 22
4 멤버변수 4-2 클래스변수 실습예제 Box3Test.java 01 02 03 04 05 06 07 08 09 10 class Box3 { int width; int height; int depth; long idnum; static long boxid = 0; public void increment() { idnum = ++boxid; 클래스변수선언 메소드가호출될때마다클래스변숫값증가 23
4 멤버변수 4-2 클래스변수 실습예제 Box3Test.java 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 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 + " 입니다."); 클래스변수에접근할때는클래스명을통해서접근 24
4 멤버변수 4-2 클래스변수 25
4 멤버변수 4-3 종단 (final) 변수 종단변수 - final 을사용하여선언하며변할수없는상숫값을갖음 형식 final 변수형 = 변숫값 ; final int MAX =100; final int MIN = 1; 26
5 멤버변수접근한정자 5-1 public 클래스내의멤버변수접근을제한할수있는방법으로접근한정자를제공 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;... 27
5 멤버변수접근한정자 5-2 private 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;... 오류발생 28
6 변수의유효범위 (Scope) 변수의유효범위 207 page 29
학습정리 클래스의일반구조 1 클래스는 속성 + 기능 으로구성된다. 2 클래스에는기능을나타내는생성자 ( 또는생성자메소드 ) 와메소드가있다. 클래스선언 1 클래스선언시한정자를사용할수있다. 2 클래스에는속성만나올수도있고, 메소드만있을수도있다. 객체의생성 1 객체의선언과생성과정을통해객체를사용할수있다. 2 객체를생성하기위해 new 라는예약어를사용한다. 30
학습정리 멤버변수 1 객체의속성을나타내는멤버변수에는객체변수, 클래스변수, 종단변수가있다. 2 객체변수는특성에따라기본자료형을가지는객체변수와참조자료형을가지는객체변수가있다. 3 기본자료형을가진객체변수는실제값을가진다. 4 참조자료형을가진객체변수는값이아닌객체의주소를가진다. 5 클래스변수는그클래스로부터생성된객체들이공유하는변수이다. 6 종단변수는상수를정의하는데사용되며, 주로변수명을대문자로사용하는것이관례이다. 7 멤버변수에접근하는방법은객체변수는객체명을, 클래스변수는클래스명을사용하여접근한다. 31
학습정리 멤버변수접근한정자 1 자바는멤버변수접근한정자를제공하여객체지향의주요특성인캡슐화와정보은폐를제공한다. 2 public 한정자는접근에제한이없는한정자이다. 프로그램에서는보안상 public의사용을최소화해야한다. 3 private 한정자는그클래스내부에서만사용할수있는한정자이다. 4 한정자를지정하지않고사용하는경우는같은패키지에속한클래스에서는제한없이사용할수있다. 변수의유효범위 1 변수의유효범위는그변수가사용될수있는영역을의미한다. 32
33