JAVA Programming 1 15 public class Class Example
명품 JAVA Programming 1
객체의 활용 15 객체의 멤버 접근 : 객체 레퍼런스. 멤버 객체의 필드에 값 대입 public class Class. Example { public static void main (String args[]) { Person a. Person = new Person("홍길동 "); } } a. Person. age = 30; int i = a. Person. age; String s = a. Person. get. Name(); 객체의 필드에서 값 읽기 객체의 메소드 호출
예제 4 -1 : 상품 하나를 표현하는 클래스 Goods 만 들기 16 상품 하나를 표현하는 클래스 Goods를 작성하라. 상품은 String 타입의 name, int 타입의 price, number. Of. Stock, sold 등 네 개의 필드를 갖는다. Goods 클래스 내에 main() 메소드를 작성하여 Goods 객체를 하나 생성하고 이 객체에 대한 레퍼런스 변수 명을 camera로 하라. 그리고 나서 camera의 상품 이름(name 필드)을 “Nikon”, 값(price)을 400000, 재고수(number. Of. Stock)를 30, 팔린 개수(sold)를 50으로 설정하라. 그리고 설정된 이들 값을 화면에 출력하라. public class Goods { String name; int price; int number. Of. Stock; int sold; public static void main(String[] args) { Goods camera = new Goods(); camera. name = "Nikon"; camera. price = 400000; camera. number. Of. Stock = 30; camera. sold = 50; } } System. out. println("상품 System. out. println("재고 System. out. println("팔린 이름: " 가격: " 수량: " + + camera. name); camera. price); camera. number. Of. Stock); camera. sold); 상품 상품 재고 팔린 이름: Nikon 가격: 400000 수량: 30 수량: 50
예제 4 -2 : 지수 클래스 My. Exp 만들기 17 클래스 My. Exp를 작성하라. My. Exp는 지수값을 표현하는 클래스로서 두 개의 정수형 멤버 필드 base와 exp를 가진다. 23의 경우 base는 2이며, exp는 3이다. base와 exp는 양의 정수만을 가지 는 것으로 가정한다. 또한 My. Exp는 정수값을 리턴하는 get. Value()라는 메소드를 제공한다. get. Value()는 base와 exp 값으로부터 지수를 계산하여 정수 값으로 리턴한다. 예를 들어 My. Exp 객체의 base 필드가 2이고 exp가 3이라면 get. Value()는 8을 리턴한다. public class My. Exp { int base; int exp; int get. Value() { int res=1; for(int i=0; i<exp; i++) res = res * base; return res; } public static void main(String[] args) { My. Exp number 1 = new My. Exp(); number 1. base = 2; number 1. exp = 3; My. Exp number 2 = new My. Exp(); number 2. base = 3; number 2. exp = 4; } } System. out. println("2의 3승 = " + number 1. get. Value()); System. out. println("3의 4승 = " + number 2. get. Value()); 2의 3승 = 8 3의 4승 = 81
객체 배열 선언과 생성 사례 19 public static void main(String [] args) { Person[] pa; pa = new Person[10]; for(int i=0; i<pa. length; i++) { pa[i] = new Person(); pa[i]. age = 30 + i; } } for(int i=0; i<pa. length; i++) System. out. print(pa[i]. age+" "); 30 31 32 33 34 35 36 37 38 39
예제 4 -3 : 객체 배열 생성 20 Scanner 클래스를 이용하여 상품을 입력 받아 Goods 객체를 생성하고 이들을 Goods 객체 배열에 저장하라. 상품을 3개 입력 받으면 이들을 모두 화면에 출력하라. java. util. Scanner; import class Goods { private public class Goods. Array { public static void main(String[] args) { Goods [] goods. Array; goods. Array = new Goods [3]; Goods(String n, int p, int n. Stack, int s) { name = n; price = p; number. Of. Stock = n. Stock; sold = s; } Scanner s = new Scanner(System. in); for(int i=0; i<goods. Array. length; i++) { String name = s. next(); int price = s. next. Int(); int n = s. next. Int(); int sold = s. next. Int(); goods. Array[i] = new Goods(name, price, n, sold); } for(int i=0; i<goods. Array. length; i++) { System. out. print(goods. Array[i]. get. Name()+" "); System. out. print(goods. Array[i]. get. Price()+" "); } System. out. print(goods. Array[i]. get. Number. Of. Stock()+" "); System. out. println(goods. Array[i]. get. Sold()); } } String name; int price; int number. Of. Stock; int sold; } String get. Name() {return name; } int get. Price() {return price; } int get. Number. Of. Stock() {return number. Of. Stock; } int get. Sold() {return sold; } 콜라 500 10 20 사이다 1000 20 30 맥주 2000 30 50 키 입력 부분
25
예제 4 -4 : 배열의 전달 27 char 배열을 메소드의 인자로 전달하여 배열 속의 공백(' ')문자를 ‘, ’로 대치하는 프로그램을 작성하라. public class Array. Parameter { static void replace. Space(char a[]) { for (int i = 0; i < a. length; i++) if (a[i] == ' ') a[i] = ', '; } static void print. Char. Array(char a[]) { for (int i = 0; i < a. length; i++) System. out. print(a[i]); System. out. println(); } public static void main (String args[]) { char c[] = {'T', 'h', 'i', 's', 'a', 'p', 'e', 'n', 'c', 'i', 'l', '. '}; print. Char. Array(c); replace. Space(c); print. Char. Array(c); } } This is a pencil. This, a, pencil. replace. Space() a for (int i = 0; i < a. length; i++) if (a[i] == ' ') a[i] = ', '; , T h i s a p e n c c main() i l .
메소드 오버로딩 28 오버로딩(Overloading) � 한 클래스 내에서 두 개 이상의 이름이 같은 메소드 작성 메소드 이름이 동일하여야 함 매개 변수의 개수가 서로 다르거나, 타입이 서로 달라야 함 리턴 타입은 오버로딩과 관련 없음 // 메소드 오버로딩이 성공한 사례 // 메소드 오버로딩이 실패한 사례 class Method. Overloading { public int get. Sum(int i, int j) { return i + j; } public int get. Sum(int i, int j, int k) { return i + j + k; } public double get. Sum(double i, double j) { return i + j; } } class Method. Overloading. Fail { public int get. Sum(int i, int j) { return i + j; } public double get. Sum(int i, int j) { return (double)(i + j); } }
- Slides: 29