[자바공부하기 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]
'자바 > JAVA...Spring' 카테고리의 다른 글
[자바공부하기 8] 추상클래스 (0) | 2014.05.20 |
---|---|
[자바공부하기 7]OOP의 개념 - 상속 2 (0) | 2014.05.19 |
[JAVA공부하기 5]Javah, Javap사용법 (0) | 2014.05.16 |
[자바공부하기 4]JDB 사용법 (0) | 2014.05.15 |
[자바공부하기 3]Jar 사용법 (0) | 2014.05.15 |