본문 바로가기

Java

private와 상속

package model;

public class Parent {
	public String name;
	public int age;
	private int money; 
	
	public void print(){
		System.out.println(name);
		System.out.println(age);
		System.out.println(money);
	}
    
}

▶money변수를 private로 바꿨다 그렇다면 money 변수는 상속이 될까?

: 상속이 된다! 노출을 안해서 다른곳에서 접근 못하게 한다는 것이지 상속이 안되는 것이 아니다.

접근이 되지 않기때문에 대신 getter/setter를 사용해줘야한다.

package model;

public class Parent {
	public String name;
	public int age;
	private int money; // 노출안하겠다고했지 상속은 된다
	
	public void print(){
		System.out.println(name);
		System.out.println(age);
		System.out.println(getMoney());
	}	

	public int getMoney() {
		return money;
	}
	public void setMoney(int money) {
		if(money < 0) {
			this.money = 0; // money에 마이너스값 입력 못하게하려고
		}
		else {
		this.money = money;
		}
	}
	
}

package model;

public class Child extends Parent {
		public String hobby;
		
		public void printChild(){
			System.out.println(name);
			System.out.println(age);
			System.out.println(getMoney());
			System.out.println(hobby);
		}
}

package main;

import model.Child;
import model.Parent;

public class Main {

	public static void main(String[] args) {
		Parent p = new Parent();

		
		p.name = "홍길동";
		p.age = 25;
		p.setMoney(1000000000);
		
		p.print();
		
		System.out.println();
		System.out.println();
		
		Child c = new Child();
		c.name = "영희";
		c.age = 27;
		c.setMoney(100000000);
		c.hobby = "건물사기";
		
		c.printChild();
	}
	

}

'Java' 카테고리의 다른 글

실습: 학사관리  (0) 2023.07.03
메소드 오버라이딩(Method Overriding)  (0) 2023.07.03
상속 (Parent-Child 관계)  (0) 2023.07.03
생성자 Constructor  (0) 2023.07.03
메서드 오버로딩(Overloading)  (0) 2023.07.03