본문 바로가기

IT/자바

추상클래스, 인터페이스

MyMain_학생.java

고등학생.java

중학생.java

초등학생.java

학생.java



/*

[ 추상 클래스는 표준화를 하기 위해 만듬 : 공통적인 것을 모아 놓음 ] 추상 클래스는 추상 메소드를 포함하지 않아도 되고 추상 메소드를 포함한 클래스는 추상 클래스여야 함 추상 클래스는 객체생성 못함.(new 클래스(); <-- 이걸 못함) 추상 메소드를 포함한 클래스로부터 상속 받는 클래스는 반드시 재정의 의무를 갖음(절대적) 인터페이스는 반드시 추상메소드만을 가져야 함 클래스 : 객체 생성할 떄 사용(물건 만들때) 인터페이스 : 사용자에게 메뉴얼 제공 다형성 : 동일한 명령으로 각자의 행동을 취함 추상적으로 만들어 놓으면 추후 객체를 만들 때 편함. */ package mymain; import myutil.고등학생; import myutil.중학생; import myutil.초등학생; import myutil.학생; public class MyMain_학생 { static void 어머님_왈(학생 [] student_array) { //개선루프 //다형성(Polymorphism) //전달된 명령은 동일하지만 명령을 받은 객체가 자신에 맞는 행동 for(학생 student : student_array) { student.공부한다(); } } public static void main(String[] args) { /*학생 [] student_array = { new 초등학생(), new 중학생(), new 고등학생() };*/ //추상클래스는 객체생성 못한다. //학생 s = new 학생(); //이런 형태 상당히 많이 사용 학생 [] student_array = new 학생[3]; student_array[0] = new 초등학생(); student_array[1] = new 중학생(); student_array[2] = new 고등학생(); //어머니왈 어머님_왈(student_array); } }

package myutil;

//추상 클래스
public abstract class 학생 {
	//공통속성
	int 학년;
	int 학번;
	
	//추상메소드
	public abstract void 공부한다();
}
package myutil;

public class 초등학생 extends 학생 {
	@Override
	public void 공부한다() {
		System.out.println("--초등학생: 구구단--");
	}
}
package myutil;

public class 중학생 extends 학생 {
	@Override
	public void 공부한다() {
		// TODO Auto-generated method stub
		System.out.println("--중학생: 방정식--");
	}
}
package myutil;

public class 고등학생 extends 학생 {
	@Override
	public void 공부한다() {
		// TODO Auto-generated method stub
		System.out.println("--고등학생: 미/적분--");
	}
}


'IT > 자바' 카테고리의 다른 글

업캐스팅 다운캐스팅  (0) 2018.05.07
업캐스팅과 다운캐스팅의 차이를 쉽게 설명하면 방향의 차이  (0) 2018.05.07
추상화  (0) 2018.05.04
오버라이딩  (0) 2018.05.04
업, 다운 케스팅  (0) 2018.05.04