티스토리 뷰

Web/JAVA

[Java] 생성자(Constructor)

Aaron 2019. 4. 25. 23:51
반응형


1. 생성자

-- Student.java

1
2
3
4
5
6
7
public class Student {
    String name;
    
    public void setName(String name) {
        this.name = name;
    }
}
cs

-- Stu1.java

1
2
3
4
5
6
public class Stu1 extends Student {  // Student 클래스를 상속    
    public void say() {
        System.out.println("Hi I'm " + this.name);
    }
}
 
cs

-- MasterStu.java

-- 생성자는 클래스명과 메서드명이 동일

-- 리턴타입을 정의하지 않음

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MasterStu extends Stu1 {
    public MasterStu(String name) {   // 
        this.setName(name);
    } 
    public void say() {  
        System.out.println("I'm " + this.name + " Nice to meet");
    }
    public void say(String state) { 
        System.out.println(this.name + " is " + state + " Hungry..");
    }
 
    public static void main(String[] args) {
        MasterStu mstu1 = new MasterStu("Aaron");   // 생성자 호출 시 문자열을 전달해야 함
        System.out.println(mstu1.name);  // Aaron
    }
}

cs



2. default 생성자

-- Stu1.java

-- 클래스에 생성자가 하나도 없다면 컴파일러는 자동으로 default 생성자를 추가

-- 하지만 작성한 생성자가 하나라도 구현되어 있다면 default 생성자는 추가되지 않음

1
2
3
4
5
6
7
8
public class Stu1 extends Student {  
    public Stu1() {  // default 생성자 
    }
    
    public void say() {
        System.out.println("Hi I'm " + this.name);
    }
}
cs



3. 생성자 오버로딩(overloading)

-- 하나의 클래스에 input이 다른 여러개의 생성자를 만들 수 있음

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class MasterStu extends Stu1 {
    public MasterStu(String name) {   // String이 input인 생성자
        this.setName(name);
    } 
    
    public MasterStu(int grade) {  // int가 input인 생성자
        if (grade == 1) {
            this.setName("firstAaron");
        } else if (grade ==2) {
            this.setName("secondAaron");
        }
    }
    
    public void say() {  
        System.out.println("I'm " + this.name + " Nice to meet");
    }
    
    public void say(String state) { 
        System.out.println(this.name + " is " + state + " Hungry..");
    }
 
    public static void main(String[] args) {
        MasterStu mstu1 = new MasterStu("Aaron");   
        MasterStu mstu2 = new MasterStu(1);
        MasterStu mstu3 = new MasterStu(2);
 
        System.out.println(mstu1.name);  // Aaron
        System.out.println(mstu2.name);  // firstAaron
        System.out.println(mstu3.name);  // secondAaron
    }
}
cs



.

--

--

--

--

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday