보기보기 개발 블로그

eclipse / 생성자 본문

Java

eclipse / 생성자

bokboks 2023. 4. 19. 08:12

안녕하세요 지난 포스팅에서는 자바 상속에 대하여 알아보았고

이번엔 생성자에 대해 알아보겠습니다.

 

 

eclipse / 자바 상속

안녕하세요 바빠서 간만에 포스팅 올려봅니다 지난 포스팅에선 자바 패키지 에 대하여 알아보았고 이번에는 자바의 상속에 대하여 알아보겠습니다. eclipse / 자바 패키지 안녕하세요 지난 포스

stackbok.tistory.com


package javaexp.a09_inheriy;

public class A02_Constructor {
	public static void main(String[] args) {
		/*
		 # 부모 생성자 호출 : super() cf) super(상속의 상위지칭), this(현재클래스 지칭)
		 ->z.03_vo 패키지 ->person
		 1.상속하는 클래스는 부모의 생성자를 반드시 호출하여야 한다.
		 	1)default 생성자는 기본적으로 default 생성자를 호출하기 때문에
		 	선언하지 않더라도 에러가 없다.(파라미터 값이 없거나)
		 	
		 		-자바의 모든 클래스는 보이지않지만 extends Object로 상속을 받아서 처리한다.
		 			그래서 default이기에 선언하지 않는다.
		 		class Father extends Object{} //부모또한 최상위 클래스 오브젝트에게 상속받음
		 		class Son extends Father{
		 		
		 			public Son(){
		 				super();
		 			}
		 		}
		 		
		 	2) (어려움 주의) 상위 클래스에 매개변수가 있는
		 	생성자를 선언했을때..
		 	
		 	class Mother{
		 		String name;
		 		Mother(String name){
		 			this.name = name;
		 		}
		 	}
		 	class Daught extends Mother{
		 		Daughter(String name){
		 			super(name); //
		 	ㄴ>반드시 상위에 있는 생성자 호출..
		 		}
		 	}
		 	# 부모없는 자식이 없듯이
		 		부모의 생성자가 선언되면 반드시 해당 생성자를 호출하여야 한다.
		 		
		 		
		 	# 명시적 부모 생성자 호출
		 	1. 부모객체 생성할 때 , 부모 생성자 선택해 호출
		 		자식 클래스(매개변수선언..){
		 			super(매개변수..)
		 		}
		 		
		 	2. super(매개변수..)
		 		- 매개값과 동일한 타입, 갯수, 순서 맞는 부모 생성자 호출
		 	3. 부모 생성자 없다면 컴파일 오류 발생
		 	4.반드시 자식 생성자의 첫 줄에 위치
		 	5.부모 클래스에 기본(매개변수 없는) 생성자가 없다면 필수 작성	
		 */
		Daughter01 d1 = new Daughter01("김희선");
		d1.call();
		
		//ex) Worker 직종을 할당하는 생성자 선언..
		//Developer로 Worker를 상속받아서 
		//해당 직종을 처리하고 showMyjob() 기능메서드를 통해
		//출력
		//필드값 직종
		
		Developer d =new Developer("노가다꾼.");
		d.call();
		d.showjob("개발자");
	}
}
class Worker{
	private String job;
	Worker(String job){
		this.job = job;
	}
	void call() {
		System.out.println("나의직종은: "+job);
	}
	public String getjob() {
		return job;
	}
	
}
class Developer extends Worker{
	
	Developer(String job){
		super(job);	//job에 값을 미리 할당해도된다.
		//따로 출력하고 싶다면 get메서드를 public으로 두고 하면됨
	}
	public void showjob(String job) {
		System.out.println("직업은"+job);
	}
}
class Mother01{
	private String name;
	Mother01(String name){
		this.name = name;
	}
	void call() {
		System.out.println("이름:"+name);
	}
}
class Daughter01 extends Mother01{
	/*
	 * Daughter01(){ super()}
	 */
	Daughter01(){
		super("하위매개값(이름)");
		//super 규칙
		//생성자 첫라인에 반드시 상위 클래스가 선언한 생성자의
		//매개변수에 맞는 super()로 상위 클래스의 생성자를
		//호출하여야 한다 | 안할시 컴파일에러
	}
	Daughter01(String name){
		super(name);//이렇게 하면 private로 선언된
		//		상위필드도 접근을 하여 할당한다.
	}
}

이상 생성자에 대하여 알아보았습니다.

'Java' 카테고리의 다른 글

eclipse / 자바 오버라이딩  (0) 2023.04.20
eclipse / 자바 상속  (0) 2023.04.18
eclipse / 자바 패키지  (0) 2023.03.25
eclipse / 자바 1대다 관계 클래스  (0) 2023.03.25
eclipse / 자바 1대1 관계 클래스  (0) 2023.03.25