Class - Property Jo, Heeseung
목차 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) 2
클래스의일반구조 클래스의구성 멤버변수 : 속성 생성자 : 클래스가객체화될때수행되는메소드 메소드 : 기능 3
클래스의일반구조 실습예제 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; 생성자 메소드 기능 4
클래스선언 클래스선언 형식 [public/final/abstract] class Class-name {...... 클래스의속성과기능을기술... 클래스의한정자 Public : 모든클래스에서접근가능 한정자사용안함 : 패키지내의클래스에서만접근가능 Final : 서브클래스를가질수없는클래스 추상 (abstract) : 객체를생성할수없는클래스 - 상속을위해정의한클래스 5
클래스선언 속성만가지는클래스 형식 class Box { int width; int height; int depth; 속성 6
클래스선언 속성과메소드를가지는클래스 형식 class Box { int width; int height; 속성 int depth; public void volume() { int vol; vol = width * height * depth; System.out.println("Volume is "+vol); 메소드 7
클래스선언 속성, 생성자, 메소드를가지는클래스 형식 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); 생성자 메소드 8
객체의생성 객체의선언 형식 클래스명객체변수 ; Box mybox1; Avg student1; String name; 9
객체의생성 객체의생성 형식 객체변수 = new 클래스명 ; Box mybox1; mybox1 = new Box(10,20,30); 10
객체의생성 객체의선언과생성 형식 클래스명객체변수 = new 클래스명 (); Box mybox1 = new Box(10, 20, 30); Avg student1 = new Avg(); String name = new String(" 홍길동 "); 11
객체의생성 객체의선언과생성 class Box { int width; int height; int depth; class MyBox {... Box mybox1; Box mybox2; mybox1 = new Box(); mybox2 = new Box();... 12
객체의생성 실습예제 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
객체의생성 실습예제 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
객체의생성 15
멤버변수 멤버변수 클래스에서메소드외부에선언된변수 멤버변수의구분 멤버변수의선언 형식 [public/private] [static/final] 변수타입변수명 ; 16
객체변수 객체변수 객체가가질수있는특성을표현 class Box { int width; int height; int depth; 17
객체변수 배정문에서의객체변수의다른특성 18
객체변수 실습예제 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(); 19
객체변수 실습예제 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 속성값변경 같은값이출력 20
객체변수 21
클래스변수 클래스변수 static을사용하여선언 전역변수 (global variable) 의개념 형식 static 변수형변수명 ; static long boxid; static double degree; 22
클래스변수 클래스변수의사용 23
클래스변수 실습예제 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; 클래스변수선언 메소드가호출될때마다클래스변수값증가 24
클래스변수 실습예제 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 + " 입니다."); 클래스변수에접근할때는클래스명을통해서접근 25
클래스변수 26
종단변수 종단변수 final 을사용하여선언하며변할수없는상수값을가짐 형식 final 변수형 = 변수값 ; final int MAX =100; final int MIN = 1; 27
멤버변수접근한정자 클래스내의멤버변수접근을제한할수있는방법으로접근한정자를제공 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;... 30
멤버변수접근한정자 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;... 오류발생 한정자를지정하지않을경우같은패키지에속한클래스에서는제한없이사용이가능 31
변수의유효범위 (Scope) 변수의유효범위 그변수가사용될수있는영역을의미 멤버변수 클래스내에메소드밖에서선언된변수를의미 클래스내의어디서나사용가능 메소드지역변수와메소드매개변수 메소드내에서만사용가능 32
변수의유효범위 (Scope) 변수의유효범위 33
학습정리 클래스의일반구조 클래스는 " 속성 + 기능 " 으로구성 클래스에는기능을나타내는생성자 ( 또는생성자메소드 ) 와메소드가존재 클래스선언 클래스선언시한정자를사용 객체의생성 객체의선언과생성과정을통해객체를사용 객체를생성하기위해 new 라는예약어를사용 34
학습정리 멤버변수 객체의속성을나타내는멤버변수 - 객체변수, 클래스변수, 종단변수 기본자료형을가진객체변수는실제값을가짐 참조자료형을가진객체변수는값이아닌객체의주소를가짐 클래스변수는그클래스로부터생성된객체들이공유하는변수 종단변수는상수를정의하는데사용 멤버변수에접근하는방법은객체변수는객체명을, 클래스변수는클래스명을사용하여접근 35
학습정리 멤버변수접근한정자 자바는멤버변수접근한정자를제공 public 한정자는접근에제한이없는한정자 - 프로그램에서는보안상 public 의사용을최소화하는것이좋음 private 한정자는그클래스내부에서만사용할수있는한정자 한정자를지정하지않고사용하는경우는같은패키지에속한클래스에서는제한없이사용가능 변수의유효범위 변수의유효범위는그변수가사용될수있는영역을의미 36