상속이란 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를통해 먼저 호출한다

+ Recent posts