상속이란 extends란 키워드를 사용해
기존클래스를 재사용해서
새로운 클래스를 작성하는것으로
두 클래스를 부모(super class)와
자손(sub class)의 관계를 맺어주고
자손은 부모의 모든 멤버를 상속받는다
상속받을수있는 클래스는 단하나이다.
상속관계(is-a), 포함관계(has-a)
//class Human
String name;
int age;
public Human() {
this("haha",123)
} //본인클래스에서 다른 인자를 호출하기위해선 this method를이용한다
//super class에 인자생성자를 만들경우
//기본생성자가 자동으로 생성되지않기때문에
//super class에 기본생성자를 직접 만듬으로써
//Sub class에 생성자를 만들지않아도 문제가없다.
public Human(String name, int age) { //인자생성자 생성
this.name = name; //name 과 age를 매개변수를통해 받아온다
this.age = age; //자식클래스에서는 부모생성자를 super를 이용해 만들어야한다
}
public void getInfo() {
System.out.println(name+age);
}
//super : 부모클래스의 객체를 의미, 부모클래스의 변수를 접근
//this : 자신의 객체를 의미, 자신클래스의 변수를 접근
//super() method: super class의 생성자를 호출하기위한 method
//this() method: 자신의 생성자를 호출하기위한 method
//super() method는 생성자 안에서만 호출할수있다.
//항상 생성자의 첫줄에 와야한다
//static method안에서는 사용할수 없다.
//유저가 생성자를 작성하지 않는경우 하위클래스 생성자에서 자동으로 호출한다
//class Employee extends Human
//Human class를 extends 키워드를 이용하여 상속받는다
super();
int salary;
public Employee() {
super(); //super method를 이용해 super class의 기본생성자를 호출한다
} //생성자를 만들지않아도 기본생성자가 생성되면서 super method가 만들어진다
//super class에서 인자생성자를 만들경우 super class에 기본생성자가 없어지므로
//super class에 따로 기본생성자를 만들어주거나
//Sub class에 super method를 포함한 생성자를 만들어줘야한다
public Employee(String name, int age, int salary) {
super(name, age); //부모클래스의 생성자를 불러오기위해 super method를 이용한다
this.salary = salary; //salary를 추가해준다
}
public void getInfo() {
System.out.println(name+age+salary);
} //부모클래스에서 int salary를 추가해 확장시켜준다
//super class에 기본생성자에 다른 인자를 가져와
//name, age인자를 초기화시켰으므로
//haha, 123, default 값 0이 출력된다
//super class에 getInfo() method를 overriding한것으로
//super class에 method를 subclass에서 재정의한것이다
//호출하고자하는 method 는 super class에 존재해야하고
//접근 제어자는 super class보다 넓거나 같다야 한다.
//반환 타입, method명, 매개변수와 type이 같아야하고
//수행할 명령은 달라야 한다.
//class Student extends Human
//public class Inheritance
//main
Employee em = new Employee("hoho",123,999);
em.getInfo();
//Employee는 Human으로부터 상속을 받았기때문에 작동된다
//super method를 이용해 Sub class 에
//생성자를 overriding 했기때문에
//hoho,123,999가 출력된다
Student stu = new Student();
stu.getInfo();
//Student는 Human으로부터 상속을 받았기때문에 작동된다
//본인 class에서 overridng된 생성자가
//getInfo method를통해 먼저 호출한다
'java' 카테고리의 다른 글
추상클래스(abstract class), 추상메소드(abstract method) (0) | 2019.08.02 |
---|---|
접근 제어자(Access modifier) (0) | 2019.08.02 |
캡슐화(encapsulation) (0) | 2019.08.02 |
메소드, 생성자 오버로딩(overloading) (0) | 2019.08.02 |
return, 매개변수 (0) | 2019.08.02 |