반응형
클래스 상속
출처 : 혼자 공부하는 자바
부모 클래스에서 private 접근 제한 갖는 것은 상속 대상에서 제외된다.
또한 다른 패키지에 존재할 경우 deafult 접근 제한된 것도 제외된다.
부모 생성자 호출
자식 객체를 생성할 때 부모 객체가 먼저 생성되고 그 다음 자식 객체가 생성된다.
출처 : 혼자 공부하는 자바
출처 : 혼자 공부하는 자바
명시적으로 부모 생성자를 호출하려는 경우 자식 클래스에서 super를 사용한다.
매소드 재정의
부모 클래스의 메소드가 자식 클래스에서 사용하기에 부적합한 경우 자식 클래스에 수정하여 사용한다.
출처 : 혼자 공부하는 자바
이미 자식 클래스에서 재정의된 메소드를 출력하기 위해 super를 붙여서 부모 메소드를 호출할 수 있다.
final 클래스와 final 메소드
해당 선언이 최종 상태이며 수정될 수 없다.
final 클래스는 부모 클래스가 될 수 없어 자식 클래스를 만들 수 없음을 의미한다.
또한 재정의도 불가하다.
출처 : 혼자 공부하는 자바
실습 문제
실습문제 1
PeopleApp.java
package PeopleApp;
import exam02.*;
public class PeopleApp2 {
public static void main(String[] args) {
StudentWorker s = new StudentWorker("홍길동","0000000",1234,100000);
AirForce a = new AirForce("김대위","000000",2345,"F-16팰콘");
Army ar = new Army("라이언일병","000000",3456,"K1A1");
s.show();
a.show();
ar.show();
}
}
class StudentWorker extends Student {
int salary;
public StudentWorker(String name, String ssn, int studentNo, int salary) {
super(name, ssn, studentNo);
this.salary=salary;
}
void show() {
System.out.printf("이름 %s 학번 %d 월급 %d원\n",name,studentNo,salary);
}
}
class Soldier extends People{
int soldierNo;
public Soldier(String name, String ssn,int soldierNo) {
super(name, ssn);
this.soldierNo = soldierNo;
}
}
class AirForce extends Soldier{
String fighter;
public AirForce(String name, String ssn, int soldierNo, String fighter) {
super(name, ssn, soldierNo);
this.fighter=fighter;
}
void show() {
System.out.printf("이름 %s 군번 %d 전투기 %s\n",name,soldierNo,fighter);
}
}
class Army extends Soldier{
String tank;
public Army(String name, String ssn,int soldierNo,String tank) {
super(name, ssn, soldierNo);
this.tank=tank;
}
void show() {
System.out.printf("이름 %s 군번 %d 탱크 %s\n",name,soldierNo,tank);
}
}
People.java
package exam02;
public class People {
public String name;
public String ssn;
public People(String name, String ssn) {
this.name = name;
this.ssn = ssn;
}
}
Student.java
package exam02;
public class Student extends People{
public int studentNo;
public Student(String name, String ssn, int studentNo) {
super(name, ssn);
this.studentNo = studentNo;
}
}
실습문제 2
PeopleApp.java
package PeopleApp;
import exam02.*;
public class PeopleApp2 {
public static void main(String[] args) {
StudentWorker s = new StudentWorker("홍길동","0000000",1234,100000);
AirForce a = new AirForce("김대위","000000",2345,"F-16팰콘");
Army ar = new Army("라이언일병","000000",3456,"K1A1");
s.show();
a.show();
ar.show();
}
}
class StudentWorker extends Student {
int salary;
public StudentWorker(String name, String ssn, int studentNo, int salary) {
super(name, ssn, studentNo);
this.salary=salary;
}
void show() {
System.out.printf("이름 %s 학번 %d 월급 %d원\n",name,studentNo,salary);
}
}
class Soldier extends People{
int soldierNo;
public Soldier(String name, String ssn,int soldierNo) {
super(name, ssn);
this.soldierNo = soldierNo;
}
void show() {
System.out.printf("이름 %s 군번 %d",name,soldierNo);
}
}
class AirForce extends Soldier{
String fighter;
public AirForce(String name, String ssn, int soldierNo, String fighter) {
super(name, ssn, soldierNo);
this.fighter=fighter;
}
@Override
void show() {
super.show();
System.out.printf("전투기 %s\n",fighter);
}
}
class Army extends Soldier{
String tank;
public Army(String name, String ssn,int soldierNo,String tank) {
super(name, ssn, soldierNo);
this.tank=tank;
}
@Override
void show() {
super.show();
System.out.printf("탱크 %s\n",tank);
}
}
'대학교' 카테고리의 다른 글
데이터구조 - (8) 정렬 -2 (0) | 2023.11.22 |
---|---|
한국 근현대사 - (8) 제3공화국 (1) | 2023.11.22 |
자바 - (8) 패키지와 접근 제한자 (3) | 2023.11.21 |
마이크로프로세서 - (10) 16비트 타이머/카운터 (2) | 2023.11.20 |
파이썬 - (6) 여러 가지 자료형 (1) | 2023.11.15 |