Language/JAVA

JAVA 자바 활용 백엔드 개발 기초 연습 문제 - 생성자를 이용해 부모 Class 에 private 타입의 멤버변수 접근하기

print(blue) 2024. 4. 16. 11:13
부모의 private 타입의 멤버변수 count 는 클래스 내에 메소드를 통해서 접근이 가능함
setter 와 getter 를 사용해 접근하고 return 해주기

둘다 첫번째로 와야함, 동시에 호출 x
this  => 나의 생성자 호출
super => 부모의 생성자 호출
package modifier;

class Fruit {
	private int count;
	
	public Fruit() {} // 자식때문에 넣어준 것
	
	public Fruit(int count) {
		this.count = count;
	}
	
	public void showCount() {
		System.out.println("현재 남은 개수는 " + this.count + "입니다.");
	}
	
	public void setCount(int count) { // 값 설정
		this.count = count;
	}
	
    public int getCount() {			 // 출력
        return this.count;
    }
	
	public void showInfo() {
		System.out.println("과일 정보를 출력하는 메소드입니다.");
	}
}

class Banana extends Fruit {
	// [ 문제 2 ] 생성자를 이용하여 부모 class Fruit 의 count field 에 값 설정
	public Banana () {} // 부모의 기본 생성자가 없어서 둘다 정의 
		
	public Banana (int count) {
		super(count); 	// 부모의 멤버변수 접근
	}
	
	// [ 문제 1 ] showInfo() 메서드를 오버라이딩(overriding) 하시오.
	@Override // 어노테이션을 쓰는 가장 큰 이유 : 개발자에게 정보를 알려주는 의미가 큼
	public void showInfo() {
        System.out.println("현재 과일은 바나나입니다.");
        System.out.println("바나나는 " + super.getCount() + "개 있습니다.\n"); // this 보다는 super 를 사용하는게 개발자가 보기 이해가 편함
    }
}


public class Quiz01 {
	public static void main(String[] args) {
		
		// [ 문제 1 ]
		Banana bananaOne = new Banana();
		bananaOne.showInfo();
		// 현재 과일은 바나나입니다.
		// 바나나는 0개 있습니다.
		
		// [ 문제 2 ]
		Banana bananaTwo = new Banana(10);
		bananaTwo.showInfo();
		// 현재 과일은 바나나입니다.
		// 바나나는 10개 있습니다.
	}
}