2014년 4월 1일 화요일

추상클래스를 이용한 다형성,[자바교육/자바강좌/자바교육잘하는곳/자바교육추천/자바실무교육/JAVA/JAVA교육/JAVA학원/JAVA실무교육] abstract class Employee { String name, id; public Employee(String name, String id) { this.name = name; this.id = id; } public void gotoOffice() { System.out.println(name+"님 출근하였습니다..."); } public void gotoHome() { System.out.println(name+"님 퇴근하였습니다..."); } abstract public void startJob(); } class Designer extends Employee { private String majorTech; //주 사용기술 public Designer(String newName,String newID, String newMajorTech) { super(newName, newID); this.majorTech = newMajorTech; } public void startJob() { System.out.println(super.name + " 님이 디자인 업무를 시작 합니다."); } public void dispMajorTech() { System.out.println(super.name + " 님의 주 사용기술은 " + majorTech + " 입니다."); } } class Programmer extends Employee { //기술자 등급 1, 2, 3, 4 private int techGrade; public Programmer(String newName,String newID, int newTechGrade) { super(newName, newID); this.techGrade = newTechGrade; } public void startJob() { System.out.println(super.name + " 님이 S/W개발업무를 시작합니다."); } public void dispGrade() { System.out.println(super.name + " 님의 기술자 등급은 " + techGrade + " 입니다."); } } class ProgrammerChief extends Programmer { private String part; //업무파트 public ProgrammerChief(String newName,String newID,int newTechGrade, String newPart) { super(newName, newID, newTechGrade); this.part = newPart; } //영업팀장의 업무는 더이상 확장이 안된다는 의미, 상속안된다는 의미 //Programmer Class의 메소드 재정의 final public void startJob() { System.out.println(super.name + "님이 프로그램 개발팀 직원을 관리합니다."); } public void dispPart() { System.out.println(super.name + " 님이 맡고 있는 파트는 " + this.part + " 입니다."); } } class Main { public static void main(String args[]) { //아래 p1, d1, pc1은 모두 타입이 Employee지만 실제 실행은 다른 형대로 //런타임시 생성된 객체의 startJob() 실행, 다형성 Employee p1 = ((Employee)new Programmer("안철수","12346",3)); Employee d1 = ((Employee) new Designer("안정환","23256","플래쉬")); Employee pc1 = ((Employee)new ProgrammerChief("홍길동","12335",1, "윈도우개발")); p1.startJob(); d1.startJob(); pc1.startJob(); } } [출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecJava&wr_id=536 오라클자바커뮤니티에서 운영, 개발자 전문교육, 개인80%환급 오엔제이프로그래밍실무교육센터(www.onjprogramming.co.kr) 평일주간(9:30~18:30) 개강 (4/07)[기업100%환급]SQL기초에서 Schema Object까지 (4/07)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 (4/14)C#4.0,ADO.NET,Network 프로그래밍 (4/14)[기업100%환급]Spring ,MyBatis,Hibernate실무과정 (4/14)[기업100%환급]PL/SQL,ORACLE HINT,TUNING 평일야간(19:00~22:00) 개강 (4/04)웹퍼블리싱 마스터 (4/04)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 (4/04)C#,ASP.NET마스터 (4/07)SQL초보에서실전전문가까지 (4/08)Spring3.X, MyBatis, Hibernate실무과정 (4/22)안드로이드개발자과정 주말(10:00~18:00) 개강 (4/05)웹퍼블리싱 마스터 (4/05)닷넷실무자를위한WPF개발자과정 (4/05)Spring3.X, MyBatis, Hibernate실무과정 (4/05)SQL초보에서실전전문가까지 (4/12)C#,ASP.NET마스터 (4/12)안드로이드개발자과정 (4/12)JAVA기초에서실무까지

추상클래스를 이용한 다형성,[자바교육/자바강좌/자바교육잘하는곳/자바교육추천/자바실무교육/JAVA/JAVA교육/JAVA학원/JAVA실무교육]
 
abstract class Employee {
    String name, id;
    public Employee(String name, String id) {
        this.name = name;   
  this.id = id;
    }
    public void gotoOffice() {
        System.out.println(name+"님 출근하였습니다...");
    }
    public void gotoHome() {
        System.out.println(name+"님 퇴근하였습니다...");
    }
 abstract public void startJob();
}
 
 
class Designer extends Employee {   
 private String majorTech; //주 사용기술
    public Designer(String newName,String newID, String newMajorTech) {
        super(newName, newID);
  this.majorTech = newMajorTech;
    }
    public void startJob() {
        System.out.println(super.name + " 님이 디자인 업무를 시작 합니다.");
    }
 public void dispMajorTech() {
  System.out.println(super.name + " 님의 주 사용기술은 " + majorTech + " 입니다.");
 }
}
 

class Programmer extends Employee {  
 //기술자 등급 1, 2, 3, 4
 private int techGrade;
    public Programmer(String newName,String newID, int newTechGrade) {
        super(newName, newID);
  this.techGrade = newTechGrade;
    }
    public void startJob() {
        System.out.println(super.name + " 님이 S/W개발업무를 시작합니다."); 
    }
 public void dispGrade() {
  System.out.println(super.name + " 님의 기술자 등급은 " + techGrade + " 입니다.");
 }
}
 

class ProgrammerChief extends Programmer {
      private String part;  //업무파트
       public ProgrammerChief(String newName,String newID,int newTechGrade, String newPart) {
           super(newName, newID, newTechGrade); 
           this.part = newPart;
       }
      //영업팀장의 업무는 더이상 확장이 안된다는 의미, 상속안된다는 의미
   //Programmer Class의 메소드 재정의
       final public void startJob() {
           System.out.println(super.name + "님이 프로그램 개발팀 직원을 관리합니다.");
       }
    public void dispPart() {
     System.out.println(super.name + " 님이 맡고 있는 파트는 " + this.part + " 입니다.");
    }
}
 

class Main {
    public static void main(String args[]) {       
                //아래 p1, d1, pc1은 모두 타입이 Employee지만 실제 실행은 다른 형대로
                //런타임시 생성된 객체의 startJob() 실행, 다형성  
  Employee p1 = ((Employee)new Programmer("안철수","12346",3));
  Employee d1 = ((Employee) new Designer("안정환","23256","플래쉬"));
  Employee pc1 = ((Employee)new ProgrammerChief("홍길동","12335",1, "윈도우개발"));
  p1.startJob();
  d1.startJob();
  pc1.startJob();
    }
}

댓글 없음:

댓글 쓰기