[IT]/java
java.Inheritance(상속)
givemebro
2021. 2. 26. 14:40
반응형
상속(Inheritance) : 부모 멤버(속성, 기능)를 자식이 물려받아 재사용
> 계층구조를 형성해 다형성(Polymorphism)을 적용한 환경을 제공
is a relationship(UML : class diagram에서는 generalization)
> 사람은 동물이다 / 엔지니어는 사원이다
객체지향의 주요 개념으로써, 부모맴버를 자식이 물려받아 재 사용해 개발 생산성 향상
// public class 자식클래스 extends 부모클래스{}
> 상속은 하나만 받을 수 있음(Single Inheritance:단일 상속)
> 다중상속의 장점은 인터페이스로 채택
package step5;
class Animal {
int age = 1;
public void eat() {
System.out.println("먹다");
}
}
// 아래와 같이 부모 Animal 클래스를 상속받으면 부모의 멤버(속성, 기능)을 물려 받는다.
class Person extends Animal { // 자식클래스 extends 부모클래스
String name;
}
public class TestInheritance1 {
public static void main(String[] args) {
Person p = new Person();
p.name = "아이유";
System.out.println(p.name);
System.out.println(p.age); // 상속 받았으므로 사용 가능
p.eat(); // 상속 받았으므로 사용 가능
}
}
package step6;
public class TestInheritance2 {
public static void main(String[] args) {
Person p = new Person();
p.setName("아이유");
System.out.println(p.getName());
p.setAge(10);
System.out.println(p.getAge());
System.out.println(p.getDetails()); // 아이유와 10
}
}
package step6;
public class Person extends Animal {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// name와 age를 모두 반환
public String getDetails() {
// TODO Auto-generated method stub
// 상속 받더라도 부모의 private member는 직접 접근 불가 > getter / setter
return name + " " + super.getAge();
}
}
package step6;
public class Animal {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
반응형