複数のオブジェクトを配列として処理
オブジェクトを配列として処理する(1)
//class 배열만들기
---------------------------------------
-> Product p[] = new Product[3]; //객체배열 생성
Product p1 = new Tv(); -> p[0] = new Tv();
Product p2 = new Computer(); -> p[1] = new Computer();
Product p3 = new Audio(); -> p[2] = new Audio();
//다른 방법
Product[] p = { new Tv(), new Computer(), new Audio };
//기본 배열 만들기
---------------------------------------
//방법 1
int[] array = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;
//방법 2 (선언과 동시에 배열의 크기 지정 및 값 초기화)
int[] array1 = new int[] {1,2,3};
//방법 3 (선언과 동시에 배열의 크기 지정 및 값 초기화)
int[] array2 = {1,2,3};
//방법 4 (선언 후 기본변수에 값 초기화)int는 기본변수 Product는 참조변수
int[] array3;
array3 = {1,2,3}; // 에러
array3 = new int[]{1,2,3};
---------------------------------------
1.祖先タイプの配列には、子孫のオブジェクトを含めることができます。
-> Product p[] = new Product[3]; //객체배열 생성
Product p1 = new Tv(); -> p[0] = new Tv();
Product p2 = new Computer(); -> p[1] = new Computer();
Product p3 = new Audio(); -> p[2] = new Audio();
ここで、配列は、実際のオブジェクトではなく参照変数(Product)を格納するために使用されます.
配列内の各要素は、インスタンスのアドレス値(Tv、コンピュータ、およびAudio)を格納します.
配列を適用するコード
package chapter7;
public class Example1_Buyer {
public static void main(String[] args) {
class Product {
String name = ""; //제품이름
int price; //제품가격
int bonusPoint; //보너스 점수
Product(String name, int price, int bonusPoint){ //생성자
this.name = name;
this.price = price;
this.bonusPoint = bonusPoint;
}
}
-----------------------------------------------------//class Tv
class Tv extends Product {
Tv() {
this("jmTV",500,50); //밑에 있는 생성자 호출
}
Tv(String name, int price, int bonusPoint) {
super(name, price, bonusPoint); // 조상 생성자 호출
}
}
-----------------------------------------------------//class Computer
class Computer extends Product {
Computer() {
this("jm컴퓨터",200,20); //밑에 있는 생성자 호출
}
Computer(String name, int price, int bonusPoint) {
super(name, price, bonusPoint); // 조상 생성자 호출
}
}
-----------------------------------------------------//class Buyer
class Buyer { //물건 사는 사람
int money = 1000; //소유금액
int bonusPoint = 0; //보너스점수
Product[] cart = new Product[10]; //장바구니, cart배열 생성
int i=0;
void buy(Product p) { <---- //자손타입의 인스턴스 넘겨 줄 수 있다!!!
money = money - p.price;
bonusPoint += p.bonusPoint;
cart[i++] = p; // 인스턴스가 넘겨지면 cart배열에 저장
}
}
=======================================================//결과 확인
Buyer b = new Buyer(); //Buyer 인스턴스 생성
System.out.println(b.money); // 소유금액 1000원
Tv tv = new Tv(); //Tv 인스턴스 생성
Computer com = new Computer(); //Com 인스턴스 생성
b.buy(tv); //buy메서드에 tv인스턴스를 넣어서 호출
System.out.println("소지금 : "+b.money); //소지금 : 500
System.out.println("보유 보너스 : "+b.bonusPoint); //보유 보너스 : 50
b.buy(com); //buy메서드에 com인스턴스를 넣어서 호출
System.out.println("소지금 : "+b.money); //소지금 : 300
System.out.println("보유 보너스 : "+b.bonusPoint); //보유 보너스 : 70
System.out.println(b.cart[0].name); // jmTV
System.out.println(b.cart[1].name); // jm컴퓨터
}
}
java.util.Vector(オブジェクトストレージクラス)
すべてのタイプのオブジェクトを格納できるクラス
public class Vector extends AbstractList implements List, Cloneable, java.io.Serializable {
protected Object elementData[];
...
}
Vectorクラスには、内部にオブジェクトタイプのオブジェクト配列があり、任意のタイプのオブジェクトを含めることができます.(Objectクラスはすべてのクラスの親であり、親のタイプとしてサブクラスインスタンスを参照できます)
Vectorクラスはオブジェクトアレイを自動的に管理するので、アレイを直接管理する必要はなく、オブジェクトをVectorに格納して取得する方法を使用すればよい.
Vectorクラスの主な方法
Vectorクラスのデフォルト作成者
デフォルトでは、10個のオブジェクトを格納できるインスタンスを作成します.
10個以上保存すると自動的にサイズが増加します.
オブジェクトをVectorに保存する方法
パラメータはオブジェクトタイプの参照変数であり、どのオブジェクトでもパラメータとして使用できます.
(任意のタイプのオブジェクトを格納できます.)
戻り値がbooleanのため、保存に成功するとtrueなどが返されます.
Vectorに格納されているオブジェクトを削除します.
残りの部分はaddメソッドと同じです.
Vectorが空であるかどうかを確認します.
空の場合はTrueまたはFalse
指定した場所のオブジェクトをインデックスで返します.
3の場合、4番目に格納されたオブジェクトが返されます.
実際にVectorに格納されているオブジェクトの個数を整数に戻します.
Vectorクラスで置換されたコード
Prodcut[] cart = new Product[10];
void buy(product p) {
cart[i++] = p;
}
-----------------------------------
Vertor cart = new Vector();
void buy(Product p) {
cart.add(p);
}
購買リストのコードを出力
Reference
この問題について(複数のオブジェクトを配列として処理), 我々は、より多くの情報をここで見つけました https://velog.io/@snowgom/여러-종류의-객체를-하나의-배열로-다루기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol