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 |