본문 바로가기

Language/JAVA

JAVA - 부모(상위)생성자 호출을 위한 super 사용법

반응형
부모생성자 호출을 위한 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