2013년 10월 29일 화요일

자바 상속과 재정의를 이용한 다형성(Java inheritance)


자바 상속과 재정의를 이용한 다형성(Java inheritance)



1. 상속과 재정의를 이용한 다형성
//앞에서 구현한 상속예제의 Employee.java에 마지막 부분의 startJob 메소드를 추가
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+"님 퇴근하였습니다...");    }
    public void startJob() {}
}

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

//Main.java
class Main {
    public static void main(String args[]) {          
        Employee p = new Programmer("안철수","12346",3);
       Employee d = new Designer("안정환","23256","플래쉬");
       Employee pc = new ProgrammerChief("홍길동","12335",1, "윈도우개발");
       p.startJob();
       d.startJob();
       pc.startJob();
    }
}


[개강확정강좌]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)

[주간]
  [11/4]Spring3.X, MyBatis, Hibernate실무과정
  [11/6]SQL초보에서실전전문가까지

[평일야간]
  [11/1]C#,ASP.NET마스터
  [11/5]iPhone 하이브리드 앱 개발 실무과정
  [11/7]JAVA&WEB프레임워크실무과정
  [11/8]Spring3.X, MyBatis, Hibernate실무과정
[주말]
  [11/2]C#,ASP.NET마스터
  [11/2]Spring3.X, MyBatis, Hibernate실무과정
  [11/2]JAVA&WEB프레임워크실무과정
  [11/9]안드로이드개발자과정
 

Spring3.X, MyBatis, Hibernate실무과정 5일 35시간   11-04
JAVA&WEB프레임워크실무과정 33일 99시간   11-07
Spring3.X, MyBatis, Hibernate실무과정 12일 36시간   11-08
자바초보에서안드로이드까지 18일 54시간   11-15
Spring3.X, MyBatis, Hibernate실무과정 5일 35시간   11-02
JAVA&WEB프레임워크실무과정 14일 98시간   11-02 


댓글 없음:

댓글 쓰기