[자바공부하기 6]

OOP의 개념 - 상속 1

 

상속은 한 클래스를 확장하여 새로운 클래스를 만드는 것을 말한다. 이렇게 새로 만들어지는 클래스를 하위클래스라고 부른다. 그리고 원래의 클래스는 상위클래스라고부른다. 하위클래스는 상위클래스에서 정의한 메쏘드와 변수들을 그대로 가지고 있을 수 있다.(물론 이것도 접근변경자를 통해 조절이 가능함)여기에 추가로 하위 클래스 자체적으로 정의된 메쏘드와 변수들을 가질 수 있다. 어떤 클래스에 대해서, 상속받는 하위 클래스는 여러 개가 될수있다.

이미 만들어놓은 클래스를 기반으로 원하는 기능이 추가된 새로운 클래스를 쉽게 만들어낼 수 있다.

자바의 모든 클래스는 상속의 대상이 되는 상위클래스가 반드시 하나 존재한다.

프로그램의 재사용성과 확장성을 높인다.

 

* 상위클래스(SuperClass)  / 하위클래스(Subclass)

 

 

class Employee {

   string name;      string id;

//생성자

    public Employee(string name1, string id1) {

name =name1;    id=id1;

   }

    public void gotoOffice()  {

System.out.printin(name+"님 출근하였습니다...");

   }

 

    public void gotoHome()  {

System.out.printin(name+"님 퇴근하였습니다...");

   }

}

 


Employee Class를 상속한 Manager Class가 있다….
//직원클래스를 상속한 일반관리자 Class
class Manager extends Employee {
    String chargeDept;
    public Manager(String newName,String newID,String newDept) {
        //super는 상위클래스의 생성자를 의미
        super(newName, newID);
        this.chargeDept = newDept;
    }

    public void startJob() {
        System.out.println(this.chargeDept + " " + super.name + "님이 관리업무를 시작합니다...");
    }
}


Employee Class를 상속한 SalesEmployee Class가 있다….
//직원클래스를 상속한 영업팀직원 클래스
class SalesEmployee extends Employee {
    //영업담당지역, 메소드내에서만 변수에 접근이 가능하다.
    private String chargeArea;
    public SalesEmployee(String newName,String newID,String newArea) {
        //super는 상위클래스의 생성자를 의미
        super(newName, newID); 
        this.chargeArea = newArea;
    }
    public void startJob() {
        System.out.println(super.name + "님이 “ + this.chargeArea + “ 지역으로 영업업무를 나갑니다...");   
    }
}

상속을 위해서는 extends keyword를 사용한다. (class a extends b    b로부터 상속을 받음)

extends키워드를 이용해 클래스를 상속받으면 상속받은 클래스는 상위클래스의 필드와 메소드를 상속받는다.

ex>

앞의 Manager Class instance화 했다면
        Manager m = new Manager(“홍길동”, “12345”,”관리부”);
        String id = m.id;
        m.gotoOffice();

등과 같이 사용이 가능하다... 물론 m.startJob()처럼 자신의 Method를 사용이 가능하다.

하위클래스는 객체를 생성할 때 상위클래스의 객체를 먼저 생성해야 한다. 하위 클래스는 크게 상위클래스 객체부와 자기 자신의 객체부로 나눈 수 있다. 즉 new 키워드를 사용하여 하위클래스는 크게 상위클래스 객체부와 자기 자신의 객체부로 나눌 수 있다. 즉 new 키워드를 사용하여 하위클래스를 생성하면 상위클래스의 부분과 하위클래스 고유의 부분이 나뉘어 생성된다는 것이다. 이때 상위클래스 부분을 super이라고한다. 그리고 상위클래스 객체부를 생성하기 위해 사용하는 것이 바로 상위클래스 생성자super()이다.

ex>

   만약 Manager Class에서 super(newName, newID)를 생략하면 다음과 같은 에러가 난다.  생략시에는 default로 super() 이 삽입되는데ㅡ Employee에는 파라미터가 없는 생성자가 선언되지 않았기때문에 ….
      Example.java:22: cannot resolve symbol        symbol  : constructor Employee  ()
        location: class Employee        public Manager(String newName,String newID,String newDept) {

 

하위클래스에서 상위클래스의 맴버를 호출하고자 할때는 .(점) 연산자를 사용하여 나타낼 수 있다.

ex>

Manager Class에서 super.name
      public void startJob() {
            System.out.println(this.chargeDept +” “+ super.name + "님이 직원관리 업무 를 시작합니다...");   
    }

 

 

 

다음글에서 계속나갈께요 ^-^

 

잠깐 !! 자바 정기교육을 안내해드릴께요 ^^ 공부에 참고하시라고 올려드립니다. ^-^

 

- JAVA정기교육 -

 

1. 초보자를 위한 JAVA,JSP실무교육과정

2. 자바기초에서 Ajax,jQuery,Struts2,Spring까지

3. JAVA초보에서 Web&Spring,MiPlatForm까지

4. (개발과정)Ajax,jQuery,Spring3.X&MyBatis 실무과정

위 교육과정을 확인하시려면 아래그림을 클릭해주세요.

 

자바공부하기 6]

 

 

+ Recent posts