📝
ITスクール DAY14 Constructor/Inhertance
Constructor
概念は理解しているが、課題のレベルが上がった気がする。
二つ以上のクラスを扱うため、その関係性をしっかり把握し、メインクラスを組むことが重要になった。
点数クラス
<点数>
Score
package oop20230726;
//f
public class Jumsu {
private int no;
private String name;
private int[] answer = new int[5]; //답안 제출
private char[] ox = new char[5]; //'O' or 'X'
public int score;
public int rank;
//f end
//c
public Jumsu() {}
public Jumsu(int no, String name, int a, int b, int c, int d, int e){
this.no = no;
this.name = name;
this.answer[0] = a;
this.answer[1] = b;
this.answer[2] = c;
this.answer[3] = d;
this.answer[4] = e;
this.rank = 1;
}//c end
//m
public void compute() {
int[] dap = {3,3,3,3,3};
for(int idx = 0; idx<dap.length; idx++) {
if(dap[idx] == answer[idx]) {
ox[idx] = 'O';
score = score + 20;
}else {
ox[idx] ='X';
}
}
}
public void disp() {
System.out.print(this.no+" ");
System.out.print(this.name+" ");
System.out.print(this.ox[0]+" ");
System.out.print(this.ox[1]+" ");
System.out.print(this.ox[2]+" ");
System.out.print(this.ox[3]+" ");
System.out.print(this.ox[4]+" ");
System.out.print(this.score+" ");
System.out.print(this.rank+" ");
System.out.println();
}
}
点数を実行するクラス
<点数を実行するclass>
ScoreEx
package oop20230726;
public class JumsuTest {
public static void main(String[] args) {
//성적 프로그램
System.out.println("[시험결과]");
System.out.println("=====================");
System.out.println("번호 이름 1 2 3 4 5 점수 등수");
System.out.println("=====================");
Jumsu[] student = {
new Jumsu(1,"홍길동",1,3,1,1,1),
new Jumsu(2,"최길동",1,1,1,1,1),
new Jumsu(3,"장길동",2,3,3,4,1),
new Jumsu(4,"오길동",4,1,2,1,1),
new Jumsu(5,"구길동",1,1,2,3,4),
new Jumsu(6,"창길동",3,3,3,3,3)
};
int size = student.length;
//ox, 점수 구하기
for(int idx = 0; idx< size; idx++) {
student[idx].compute();
}
//등수 구하기
for(int a =0; a<size; a++) {
for(int b = 0; b< size ; b++) {
if(student[a].score < student[b].score)
student[a].rank++;
}
}
//출력하기
for(Jumsu a : student) {
a.disp();
}
}
}
Inheritance
継承
class AA{ //부모클래스//super/기본(base)클래스
//필드
//생성자
//메서드
public void one() {
System.out.println("one()---");
}
public void two() {
System.out.println("two()---");
}
} // class AA end
// (상속)
// class 자식클래스명 extends 부모클래스명
class BB extends AA { //자식/하위/sub클래스/파생(derived)클래스
/* public void one() {
System.out.println("one()---");
}
public void two() {
System.out.println("two()---");
}
*/
public void three() {
System.out.println("three()---");
}
}// class BB end
class CC extends BB{}
class DD extends AA{}
//java에서는 클래스는 단일상속만 가능
public class Sangsok1 {
public static void main(String[] args) {
AA aa = new AA(); //부모 객체생성 --> 생성자 자동호출
aa.one();
aa.two();
// aa.three();
BB bb = new BB(); //자식 객체생성 --> 생성자 자동호출
bb.one();
bb.two();
bb.three();
CC cc = new CC(); //자식 객체생성 --> 생성자 자동호출
cc.one();
cc.two();
cc.three();
DD dd = new DD(); //자식 객체생성 --> 생성자 자동호출
dd.one();
dd.two();
}
}
スパクラスのコンストラクタ呼び出し
class Korea extends Object {
//필드
String name;
//생성자
public Korea() { //4
System.out.println("Korea()---"); //5
this.name = name;
}
// 메서드
}
class Seoul extends Korea{
public Seoul() { //2
super(); //3
System.out.println("Seoul()---"); //6
}
}
public class Sangsok2 {
public static void main(String[] args) {
Seoul seoul = new Seoul(); //1
//자식객체 생성 --(동시에) --> (부모 기본->자식) 생성자 자동 호출
}
}
class Father extends Object{
String name = "아버지";
int age = 20;
public Father() {System.out.println("Father()---");}
public Father(String name, int age) {
this.name = name;
this.age = age;
}
}
class Son extends Father{ //부모의 필드와 메소드를 100% 다 받는다
public Son() {System.out.println("Son()---");}
public void disp() {
System.out.println(name);
System.out.println(age);
}
}
class Daughter extends Father{
String address;
public Daughter() {}
public Daughter(String name, int age, String address) { //자식 매개변수 생성자
//super();
//[기본] 부모 기본 생성자 자동호출
super(name,age); //[기본] 부모의 매개변수를 갖는 생성자를 자동호출
//super.name = name;
//super.age = age;
this.address = address;
}
public void show() {
System.out.println(name + " " + age + " " + address);
}
}
public class SuperTest {
public static void main(String[] args) {
// 자식객체 생성 --(동시에) --> (부모"기본"->자식"기본") 생성자 자동 호출
Son son = new Son();
son.disp();
System.out.println();
// [원하는 상황] 자식객체 생성 --(동시에) --> (부모"매개변수"->자식"매개변수") 생성자 자동호출
// [기본] 자식객체 생성 --(동시에) --> (부모"기본"->자식"매개변수") 생성자 자동 호출
Daughter jane = new Daughter("김제인",25,"관철동");
jane.show();
}
}
//super : 부모의 멤버변수
//super() : 부모의 생성자함수를 호출
//this : 자신의 멤버변수 접근 (예) this.name = "홍길동";
//this() : 자신의 생성자함수를 호출
Discussion