
生成子의 오버로딩(多重定義) & this(); 生成子
生成子에서 重複된 코드를 줄이기 爲해 또 다른 生成子를 呼出할 때 使用하는 것
生成子函數 → this生成子라고 表現
例示
class Person {
private int regiNum; // 住民登錄番號
private int passNum; // 旅券番號
Person(int rnum, int pnum) { // 生成子函數
regiNum = rnum;
passNum = pnum;
}
Person(int rnum) { // 오버로딩
// regiNum = rnum; // 元來 코드
// passNum = 0;
this(rnum, 0); // 어떤 函數를 呼出한걸까?
}
/*
위에 있는 生成子函數를 呼出한 것이다。(可能한 것은 그거밖에 없음)
→ rnum과 0을 因子로 받는 오버로딩 된 他 生成子 呼出 (重複된 코드를 줄이는 效果!)
*/
...
}
}
"Hello.java" 文字列에서 파일名과 擴張子인 java를 分離시키는 프로그램을 作成하시오。
- 入力 → Hello.java
- 出力 → 파일名은 Hello이며 擴張子는 java입니다。
import java.util.Scanner;
class SeparateFileName {
private String input;
private int dot;
private int length;
private String fileName, extention;
public SeparateFileName() {
}
public SeparateFileName(String input) {
this.input = input;
}
public String getInput() {
return input;
}
public void setInput(String input) {
this.input = input;
}
private void inputFileName() {
System.out.println("파일名을 入力하세요。(파일名.擴張子)");
Scanner sc = new Scanner(System.in);
input = sc.nextLine();
sc.close();
}
private void fileLength() {
length = input.length();
}
private void whereIsDot() {
for (int i = 0; i < input.length(); i++) {
if (input.charAt(i) == '.') {
dot = i;
}
}
}
private void separate() {
fileName = input.substring(0, dot);
extention = input.substring(dot + 1, length);
}
private void seperatePrint() {
System.out.println("파일名은 " + fileName + "이며 擴張子는 " + extention + "입니다。");
}
public void fileNameSeperation() {
inputFileName();
fileLength();
whereIsDot();
separate();
seperatePrint();
}
}
public class FileNameMain {
public static void main(String[] args) {
SeparateFileName checkFile = new SeparateFileName();
checkFile.fileNameSeperation();
}
}

父母클래스는 「上位클래스」 또는 「수퍼클래스」 라고 하고、
子息클래스는 「下位클래스」 또는 「서브클래스」 라고 한다。
int[][] array; // 正
int [][]array; // 不
int array[][]; // 不
1次元配列 生成時와는 다르게 第一 위의 方法으로만 文法的誤謬없이 正常的으로 2次元配列을 宣言할 수 있다。
int[][] array; // 2次元配列의 宣言
array = new int[1][5]; // 2次元配列의 初期化
int[][] array = new int[1][5]; // 配列의 宣言과 初期化를 한 番에