본문 바로가기
Java

java 상속 (Inheritance)

by 히예네 2023. 1. 29.
728x90
반응형

상속 (Inheritance): 원래 class(설계도면) 을 내려받는 상황

기존 클래스에서 필드 하나만 추가해야하는 상황이라면?

class를 상속하여 쓰자! 

 

 

구분 C# java   C++
First parent super base
Second child sub driven

언어마다 상위클래스 - 하위클래스를 부르는 명칭이 다르지만 현업에서는 보통 섞어서 쓴다.

다 알아두면 좋다.

 

직관적으로 단어 뜻을 보면 누가 상위클래스인지 바로 알수는 있다. 

parent - child를 주로 쓰자. 


상속의 문법적 사용

extends 상위클래스 {}

class Member extends Person{

}

위  코드는 Person class를 상속받았다는 뜻이다. 

 


상속을 해보자

step1  임의의 class(first 클래스)를 만들어보자. 

public class First {
	int a;
	
	void showFirst() {
		System.out.println("a : " + a);
	}
	
	
	void setA(int a) {
		this.a=a;
	}
}

 

step2 First클래스를 상속받자

public class Second extends First{

	    //아무것도 없어보이지만 First를 상속했기에 이미 First의 멤버(변수,메소드)를 보유한 상태
        int b; //본인만의 멤버변수 추가
		
		void showSecond() {
			System.out.println("b: "+b);
		}
		
}

여기에  기능을  좀 더 추가해보자

 

 

step3 Main함수에서 실행시키자

 

public class Main {
public static void main(String[] args) {
	
	Second s=new Second();
	s.a=10;//상속받은 클래스의 멤버를 내것인양 ..
	s.b=20;//객체지향은 이렇게 넣는거 안좋아해 
	
	System.out.println("a: "+s.a);
	System.out.println("b: "+s.b);
	
	
	s.showFirst();//부모 객체의 기능을 내것인양 사용. 
	System.out.println("b : "+s.b);
	System.out.println();
	
	//이런식이면 Second도 본인의 멤버변수를 출력하는 기능이 있어야함. 
	
	s.showFirst();
	s.showSecond();
	System.out.println(); //이건 상속느낌이 잘 안남
	
	//가만보니 Second 객체는 a,b 모두를 사용하려고 만든 객체이니까 
	//출력기능도 a,b 모두를 출력해주는 기능이 있는것이 더 합리적
	
	s.show();
	
	s.setMembers(50, 60);
	s.show();
	
	
	//2번째 객체 생성 및 값 대입과 출력 
	Second s2=new Second();
	s2.setMembers(100, 200);
	s2.show();
	

	
}
}

 

주의점

상속은 부모의 멤버만 가져오는것이 아니라 부모 객체도 같이 생성하는 개념이다.

즉 객체안에 객체가 있는 모습 - First객체도 동시에 만들어진다.

상속을 만들었더니 부모객체가 동시에 발동함.. 부모랑 자식가틈

 

 

728x90
반응형

'Java' 카테고리의 다른 글

java Final  (0) 2023.01.29
java 오버라이드(Override)  (0) 2023.01.29
Java_생성자  (0) 2023.01.28
Java_인스턴스멤버와 Static(정적멤버)  (0) 2023.01.28
Java_자바의 메모리  (0) 2023.01.27