예시1)

import java.util.Scanner;

class Circle{
	int r;
	Circle(int r){
		this.r=r;
	}
	double area() {
		return r*r*3.14;
	}
}

public class mmdd0229 {
	public static void main(String[] args) {

		//객체 배열 : 객체를 저장할 수 있는 공간(타입: 클래스)
		Circle [] ary = new Circle[4]; // int [] ary = new int [4]
		// 객체 배열 생성 = 객체 배열 선언
		
		//Circle c=new Circle();
	
		for(int i=0;i<ary.length;i++) {
			ary[i]=new Circle(i);	//객체를 4개 생성해서 배열위치에 저장
			System.out.println(ary[i].area());
		}
		
		
	}
}

예시2)

import java.util.Scanner;

class Song{
	String singer,song;
	
	Song(String singer, String song){
		this.singer=singer;
		this.song=song;
	}
}

public class mmdd0229 {
	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		
		Song so[]=new Song[2];//객체배열 생성
		
		for(int i=0;i<2;i++) {
			System.out.println("가수");
			String singer=scanner.next(); //BTS IU
			System.out.println("제목");
			String title=scanner.next(); //Butter  Goodday
			
			so[i]=new Song(singer, title);
		}
		for(int i=0;i<2;i++) {
			System.out.println(so[i].singer+" "+so[i].song);
		}
		
	}
}

객체배열 및 추상클래스 활용

import java.util.Scanner;

abstract class Circle{
	protected double r; 
	
	Circle(double r){
		this.r=r;
	}
	abstract double get();
}

class Cir extends Circle{
	Cir(double r){
		super(r);
			
	}
	@Override
	double get() {
		return r;
	}
}

public class mmdd0229 {
	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		
		Circle c[]=new Circle[5];
		
		for(int i=0;i<c.length;i++) {
			double r=scanner.nextDouble();
			c[i]=new Cir(r); //객체 생성
			//Circle c[]=new Cir(r); -> Upcasting
			System.out.println(c[i].get());
		}
		
	}
}

객체배열 (for-each)

import java.util.Scanner;

class Num{

int n;
Num(int n){
	this.n=n;	
}
int get() {
	return n;
	
}
}

public class mmdd0229 {
	public static void main(String[] args) {

	Num[] ary=new Num[] {new Num(1), // 객체 생성드(값 초기화)
						new Num(2),
						new Num(3)};
		
	//int [] arr= {1,2,3};
	for(Num n:ary) {
	System.out.println(n.get()); // 1,2,3 출력
	}
}
}