수색…
비고
참고 : 다중 레벨 상속은 Java에서는 허용되지만 다중 상속은 허용되지 않습니다. 자세한 내용은 http://beginnersbook.com/2013/04/oops-concepts/에서 확인하십시오.
상속 - 정의
상속은 OOP (Object Oriented Programming) 의 주요 개념 중 하나입니다. 상속을 사용하면 문제를 적절하게 모델링 할 수 있으며 작성해야하는 줄 수를 줄일 수 있습니다. 인기있는 예제를 사용하여 상속을 보겠습니다.
OOP를 사용하여 동물의 왕국 (단순 동물계, 물론 생물 학자, 사면)을 모델링해야한다고 생각하십시오. 많은 종류의 동물들이 있으며, 일부 동물은 독특한 특징을 지니고 있으며 일부 동물은 동일한 특징을 가지고 있습니다.
주요 동물 군이 있습니다. 예를 들어, Mammals , Reptiles .
그런 다음 우리는 그 가족들의 자녀들이 있습니다. 예를 들어,
-
Cat,Dog,Lion는 포유류입니다. -
Cobra와Python은 파충류입니다.
모든 동물은 eat , drink , move 것과 같은 기본적인 기능을 공유합니다. 따라서 우리는 Animal 이라는 부모를 가질 수 있다고 말할 수 있습니다. 부모는 그 기본 기능을 상속받을 수 있습니다.
그 가족들은 또한 몇 가지 특징을 공유합니다. 예를 들어 파충류는 크롤링 을 사용하여 이동합니다. 모든 포유 동물은 초기 생애에 fed milk 를 fed milk 습니다.
그런 다음 각 동물마다 고유 한 특징이 있습니다.
우리가이 동물 종을 따로 만들어야한다고 생각해보십시오. 우리는 모든 동물 종에서 같은 코드를 반복해서 써야합니다. 그 대신 우리는 상속을 사용합니다. 우리는 다음과 같이 동물계를 모델링 할 수 있습니다.
- 우리는 모든 동물의 기본적인 특징을 가진
Animal이라는 부모 Object를 가질 수 있습니다. -
Mammal과Reptile(물론 다른 동물들도)는 부모 개체,Animal로부터 기본 기능을 상속하면서 공통된 기능을 가진 개체를 처리합니다. - 동물 종 개체 :
Cat와Dog는Mammal개체에서 상속 받고,Cobra와Python은Reptile개체로부터 상속받습니다.
이 형식에서는 각 동물 종에서 동물의 기본 기능을 정의 할 필요가 없기 때문에 작성하는 코드를 줄일 수 있습니다. Animal 객체에서 정의하고이를 상속 할 수 있기 때문입니다. 동물 가족들도 마찬가지입니다.
상속 예제 - 아래 두 클래스를 고려하십시오.
교사 교실 :
class Teacher {
private String name;
private double salary;
private String subject;
public Teacher (String tname) {
name = tname;
}
public String getName() {
return name;
}
private double getSalary() {
return salary;
}
private String getSubject() {
return subject;
}
}
OfficeStaff 클래스 :
class OfficeStaff{
private String name;
private double salary;
private String dept;
public OfficeStaff (String sname) {
name = sname;
}
public String getName() {
return name;
}
private double getSalary() {
return salary;
}
private String getDept () {
return dept;
}
}
- 두 클래스는 거의 공통된 속성과 메서드를 공유하지 않습니다. 따라서 코드 반복.
- 일반적인 메소드와 속성을 포함하는 클래스 만들기.
- Teacher 및 OfficeStaff 클래스는 Employee 클래스 아래에서 모든 공통 속성 및 메서드를 상속 할 수 있습니다.
직원 등급 :
class Employee{
private String name;
private double salary;
public Employee(String ename){
name=ename;
}
public String getName(){
return name;
}
private double getSalary(){
return salary;
}
}
- 개별 메서드 및 속성 추가 개체 집합에 공통적 인 특성을 정의하는 수퍼 클래스를 만든 후에는 더 많은 특정 하위 클래스를 만드는 데 사용할 수 있습니다
- Engineer, Principal과 같은 유사한 클래스는 Employee 클래스의 하위 클래스로 생성 될 수 있습니다.
- 상위 클래스는 수퍼 클래스로, 상속 된 클래스는 하위 클래스
- 하위 클래스는 수퍼 클래스의 특수 버전입니다. - 수퍼 클래스가 정의한 모든 인스턴스 변수 및 메서드를 상속하고 고유 한 고유 요소를 추가합니다.
- 하위 클래스는 수퍼 클래스의 모든 멤버를 포함하지만 개인 클래스로 선언 된 수퍼 클래스 멤버에는 액세스 할 수 없습니다.
- 수퍼 클래스의 참조 변수는 그 수퍼 클래스, 즉 Employee emp = new Teacher ()에서 파생 된 하위 클래스에 대한 참조에 할당 될 수 있습니다.