(2) 객체 배열 예제;(getter/setter, foreach, 배열 객체 선언), 다형성

2020. 7. 1. 19:50개발공부/Java

728x90

n7/1 객체 배열 예제 풀이, 다형성

1. 새로운 개념:


- 다형성: 부모-자식 클래스 간 객체 선언에서 타입을 부모로, 객체는 자식 클래스로 할 경우 발생현상

//다형성 예시
//1. 부모 클래스 부르고 호출은 자식 클래스 내에서 하기

class Sonata extends Car{
	//super();
    system.out.println("내 차는 오빠차 뽑았다. 널 데리러 가~");

}

 

//2. 객체 생성 시 클래스 타입과 객체가 서로 다른 경우

class B extends A {
	system.out.printlf("엄마 나 집에 갈래");

}

public class Basic{
	A a1 = new B(); //B 객체 생성, 데이터 타입은 A 클래스로 형 변환(promotion)
    A a2 = new A(); //보통의 객체 (좌항의 클래스 = 우항의 클래스)
	

}


2. 실습 복기: 총점/평균(객체 + 배열)

- Exam 객체생성
 > 아래 문장이 유효한 이유는 매개변수가 없는 plain 생성자 하나를 만들어줬기 때문에
매개변수가 들어가있지 않은 Exam 객체가 정상적으로 생성된다.

- 배열에 객체 담는 방법*
 > result 배열 reference에 다수의 값 exam reference 입력 가능!

	Exam exam = new Exam();

	System.out.println("영어 점수를 입력하세요: ");
	exam.setEngExam(sc.nextInt());

	exam.setSum();
	exam.setAvg();
		
	result[i] = exam; //result라는 배열 안에 exam 객체 입력



- avg 데이터 타입(double), 다른 타입으로 선언을 한 번이라도 했을 시 오류
 > main 에서 int sum, int sum 하나씩 선언하지말고 
메서드화 시키는 것을 선호. 깔끔.- 실습 복기: 총점/평균

- foreach & null check 
 > foreach(향상 반복문), 배열 전체를 반복으로 돌릴 때. 제어값이 없을 때 가능. 
 > 배열의 항목 수만큼 실행부분을 반복하며, 반복이 이루어질 때마다 배열의 항목을 순서대로 꺼내어
변수(number)에 자동으로 대입해 줌 

 //> 양식:중괄호 내 조건문 아님 프린트, 반복 끝나고 마지막에 null값이 남아있기 때문에 break 필수!
		for (Exam num : result) {
			if(num == null) break;
			num.examInfo();

- getter & setter
 > getter 와 setter는 '메소드'를 사용해 은닉 호출과 입력을 실행한다.

//getter & setter
public void setName(String name){
 	this.name = name;
}

public void getName(){
	return name;
}