/*
[ 추상 클래스는 표준화를 하기 위해 만듬 : 공통적인 것을 모아 놓음 ] 추상 클래스는 추상 메소드를 포함하지 않아도 되고 추상 메소드를 포함한 클래스는 추상 클래스여야 함 추상 클래스는 객체생성 못함.(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 |