본문 바로가기

Language/JAVA

JAVA - EXTENDS (상속)

반응형
EXTENDS (상속)

 

 

상속할 Parent class

 

public class Parent {
	
	String name;
	int age;
	private int money;
	
	Parent(){
		System.out.println("Parent 생성자가 호출됨");
	}
	
	
	void print() {
		System.out.println("name : " + name);
		System.out.println("age : " + age);
	}
	
	// money의 getter / setter를 만들기

	public int getMoney() {
		return money;
	}


	public void setMoney(int money) {
		this.money = money;
	}
	
	
	
}

 

 

상속 받을 Child class

 

public class Child extends Parent {
	// 상속받을 Child 클래스의 Child 옆에 extends 상속해줄 클래스명을 적어준다.
	
	
	// Child 클래스는 Parent 클래스가 가지고있는
	// 속성들을 상속 받을 것이다.
	
	// name
	// age
	// money -- 들어있지만 private 설정을 했기 때문에 getter와 setter를 이용해 호출 할 수 있다.
	
	String hobby;
	
	
	Child(){
		System.out.println("Child 생성자 호출됨");
	}
	
	//void printInfo() {
	
	
	// 눈에 보이진 않지만 Parent에 속한 함수들도 같이 상속되어 있다.
	// setMoney();
	// getMoney();
	// print();
	
	// method overriding 메소드 오버라이딩
	// Method Overriding :
	// 상속하는 클래스에서 즉, 자식 클래스에서
	// 부모 클래스에 들어있는 함수 이름을 그대로 사용하되
	// 내가 원하는대로 내용만 바꿔서 사용하는것.
	void print() {
		// child 클래스의 print함수와 parent 클래스의 print 함수는 이름이 같아서
		// 사람이 보기에도 헷갈리듯이 컴퓨터도 헷갈려한다.
		// 그렇기 때문에 상속해주는 parent 클래스의 print를 method overriding에 포함시키기위해
		// super 라는 키워드를 사용해 데이터를 access할 수 있다.
		super.print();
		System.out.println("hobby :" + hobby);
	}
	
	// Method Overroading ;
	// 하나의 클래스 안에서 똑같은 이름의 함수를 여러개 만드는 것.
	
	
}

 

 

실행할 main

 

public class ParentMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Parent p = new Parent();
		
		p.name = "부모";
		p.age = 50;
		p.setMoney(1000000000);
		
		p.print();
		System.out.println("money :"+p.getMoney()+"원");
		
		
		// 상속받은 Child 클래스를 메모리에 생성(객체 생성)
		Child c = new Child();
		
		c.name = "자식";
		c.age = 20;
		c.hobby = "game";
		c.setMoney(1000000);
		System.out.println(c.getMoney());
		c.print();
		
		
		// private 설정을 해놓으면 상속이 되지 않는다.
		// Parent클래스에 있는 Money는 private 설정이 되어 있기 때문에
		// getter와 setter를 이용해 호출 할 수 있다.
		
		
		// 상속해주는 Parent 클래스의 함수를 이용해서 상속받는 Child에 있는 데이터도 나타내기위해
		// Method Overriding을 이용해 원하는 내용을 나타내준다.
		// name :
		// age :
		// hobby :
		
		
		
	}

}
반응형