반응형
부모생성자 호출을 위한 super 사용법
상속해줄 Person Class
package main.person;
public class Person {
protected int num;
protected String name;
protected String dept;
protected String address;
// protected : 상속되어있는 클래스 와 같은 패키지에있다면 private과 같은 기능을 할 수 있다.
public Person(){
}
public Person(int num, String name, String dept, String address){
this.num = num;
this.name = name;
this.dept = dept;
this.address = address;
}
public void print() {
System.out.println("num : " + num);
System.out.println("name : " + name);
System.out.println("dept : " + dept);
System.out.println("address : " + address);
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
상속받을 Professor Class
package main.person;
public class Professor extends Person {
// protected int num;
// protected String name;
// protected String dept;
// protected String address;
// Person의 함수들도 모두 상속 받았다.
String[] subjects;
public Professor() {
}
public Professor(int num, String name, String dept, String address, String[] subjects) {
super(num, name, dept, address);
this.subjects = subjects;
}
//부모로부터 물려받은 함수를 내가 수정해서 사용 하는 것 : 메소드 오버라이딩
public void print() {
super.print();
this.printSubj();
// System.out.println( name + " 교수의 개설 과목" );
// for (int i = 0; i < subjects.length ; i++) {
// System.out.println( subjects[i] );
// }
}
public void printSubj() {
System.out.println( name + " 교수의 개설 과목" );
for (int i = 0; i < subjects.length ; i++) {
System.out.println( subjects[i] );
}
}
public String[] getSubjects() {
return subjects;
}
public void setSubjects(String[] subjects) {
this.subjects = subjects;
}
}
실행할 Main Class
import main.person.Person;
import main.person.Professor;
import main.person.Staff;
import main.person.Student;
public class PersonMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p = new Person();
p.setNum(1);
p.setName("홍길동");
p.setDept("홍보부");
p.setAddress("인천시 서구");
p.print();
System.out.println("----------------------");
Professor f = new Professor();
f.setNum(2);
f.setName("김나나");
f.setDept("컴공과");
f.setAddress("서울시 마포구");
f.setSubjects(new String[] {"자바", "파이썬"}); /* JAVA에서 배열 만드는 방법 */
f.print();
// 1. 데이터를 입력할때,
// setter를 통해서 입력하고 있따.
// 객체 생성 시 바로 데이터 입력하도록
Person p2 = new Person(10, "홍길동", "마케팅", "인천시 서구");
p2.print();
System.out.println("----------------------");
Professor pf = new Professor(11, "김길동", "경제학과", "인천시", new String[] {"자바", "경제", "사회"});
pf.print();
}
}
위 코드 예시처럼 상속해주는 부모클래스에 해당하는
Person에 포함된 함수를 다른 클래스에서 상속받고 사용하려면
super를 앞에 붙여 상속받는 클래스에서 오는 데이터라는 것을 표시해
복잡한 코드를 생산성있고 간단하게 만들 수 있다.
반응형
'Language > JAVA' 카테고리의 다른 글
| JAVA - DOWN CASTING (0) | 2022.07.05 |
|---|---|
| JAVA - Up Casting (0) | 2022.07.05 |
| JAVA - EXTENDS (상속) (0) | 2022.07.04 |
| JAVA - Getter / Setter (0) | 2022.07.04 |
| JAVA - 접근제어자 (0) | 2022.07.04 |