프로그래밍/JAVA
[JAVA] 상속 예제
노력의천재
2020. 7. 26. 02:23
public class ParentClass {
int openYear = 1995;
public ParentClass() {
System.out.println("부모 클래스 생성자");
}
public void parentFun() {
System.out.println("parentFun()");
}
private void privateFun() {
System.out.println("privateFun()");
}
public void makeJJajang() {
System.out.println("makeJJajang() START");
}
}
public class FirstChildClass extends ParentClass {
int openYear = 2010;
public FirstChildClass() {
System.out.println("FirstChildClass 생성자");
}
public void firstChildFun() {
System.out.println("firstChildFun()");
}
// 메소드 오버라이드(Override)
@Override
public void makeJJajang() {
System.out.println("firstChildClass makeJJajang() START");
}
// 상위 클래스를 호출할 때 super 키워드를 사용
public void getOpenYear() {
System.out.println("firstChildClass Open Year : " + this.openYear);
System.out.println("parentClass Open Year : " + super.openYear);
}
}
public class SecondChildClass extends ParentClass {
public SecondChildClass() {
System.out.println("SecondChildClass 생성자");
}
public void secondChildFun() {
System.out.println("secondChildFun()");
}
// 메소드 오버라이드(Override)
@Override
public void makeJJajang() {
System.out.println("secondChildClass makeJJajang() START");
}
}
/* 20200906 - 상속 스터디 */
public class MainClass {
public static void main(String[] args) {
FirstChildClass firstChild = new FirstChildClass();
firstChild.parentFun();
firstChild.firstChildFun();
/* 출력 순서
부모 클래스 생성자
자식 클래스 생성자
parentFun()
firstChildFun()
*/
// 부모클래스에 private으로 선언된 메소드는 자식 클래스가 접근할 수 없음
// firstChild.privateFun();
// 클래스도 자료형이므로 다음과 같이 배열 형태로 사용가능
// 부모 클래스 배열에 자식 클래스 객체를 담을 수 있다.
ParentClass[] pArr = new ParentClass[2];
ParentClass fch = new FirstChildClass();
ParentClass sch = new SecondChildClass();
pArr[0] = fch;
pArr[1] = sch;
for(int i=0;i<pArr.length;i++) {
pArr[i].makeJJajang();
}
firstChild.getOpenYear();
}
}
추가로 알게된 점
Object 클래스는 모든 클래스의 상위 클래스이므로 즉 모든 클래스의 부모 클래스라고 할 수 있다.