[자바 무료 강의] 객체를 좀 더 손쉽게 초기화해보다 - 생성자 - 코드라떼
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의객체를 좀 더 손쉽게 초기화해보다 - 생성자최종수정일 2021-11-21
아이콘약 6분

인스턴스를 생성하고 데이터를 삽입하는 방법으로 Dot 연산자를 이용하여 데이터를 삽입했었는데요. 이번엔 인스턴스를 초기화할 때 데이터를 삽입하는 방법을 배워봅시다.

추가 노트

목차


  1. 생성자

  2. this 키워드

  3. [실습해보기] 생성자를 이용하여 클래스를 만들어보자

1. 생성자


인스턴스를 생성하려면 생성자가 항상 필요합니다.

  1. 생성자가 없으면 인스턴스를 만들 수 없습니다.

  2. 생성자는 클래스 이름과 동일해야 합니다.

  3. 생성자는 인스턴스 생성시 한번만 호출되는 특징을 가지고 있습니다.

class Person {
    String name;
    int age;
    String sex;

    // 생성자와 매개변수 
    Person(String name, int age, String sex) { 
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
}

Default 생성자

생성자를 명시적으로 선언하지 않는 경우 자동적으로 Default 생성자를 생성합니다.

class Person {
    String name;
    int age;
    String sex;

    // 컴파일러가 default 생성자를 주입한다.
}

인스턴스 생성

클래스의 생성자를 통해 인스턴스를 생성할 수 있습니다.

class Person {
    String name;
     int age;
    String sex;

    //생성자와 매개변수 
    Person(String name, int age, String sex) { 
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
}
Person person = new Person("이름", 1, "female");

2. this 키워드


this 키워드는 자기 자신 Person 클래스를 지칭합니다. this 키워드를 통해 Person 클래스 스코프 내의 멤버 변수에 접근할 수 있습니다.

*이후의 Call By Value 강의에서 this는 인스턴스의 참조값을 나타내는 것을 알 수 있습니다. 지금은 넘어가세요.

접근할 수 있는 클래스 스코프 내에서 생성자의 매개 변수명과 멤버 변수명이 동일할 경우 this 키워드를 통해 멤버 변수에 접근할 수 있습니다.

class Person {
    String name;
    int age;
    String sex;

    // 생성자와 매개변수 
    Person(String name, int age, String sex) { 
        this.name = name;
        // this.name은 클래스의 멤버 변수를 지칭하고
        //name은 매개 변수를 지칭한다.
        this.age = age;
        // this.age는 클래스의 멤버 변수를 지칭하고
        // age는 매개 변수를 지칭한다.
        this.sex = sex;
        // this.sex는 클래스의 멤버 변수를 지칭하고
        // sex는 매개 변수를 지칭한다.

    }
}

3. [실습해보기] 생성자를 이용하여 클래스를 만들어보자


case 1

코드 작성(Person.java)

class Person {
    String name;

    Person(String name) {
        this.name = name;
    }
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {
        Person person = new Person("김철수");
        System.out.println(person.name);
    }
}

출력

김철수

case 2

코드 작성(Person.java)

class Person {
    String name;
    int age;

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {
        Person person = new Person("김철수", 20);
        System.out.println(person.name);
        System.out.println(person.age);
    }
}

출력

김철수
20

case 3

코드 작성(Person.java)

class Person {
    String personName;
    int personAge;
    String personGender;

    Person(String name, int age, String gender) {
        personName = name;
        personAge = age;
        personGender = gender;
    }
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {
        Person person = new Person("김철수", 20, "male");
        System.out.println(person.personName);
        System.out.println(person.personAge);
        System.out.println(person.personGender);
    }
}

출력

김철수
20
male
도전자 질문
아이콘이눋(2021-10-11 17:40 작성됨)
생성자를 생성하고 추가로 person 이라는 이름을 지정해줘서 오류가 났던거였습니다ㅋ큐ㅠㅠ. 감사합니다. 코드 상으로는 크게 문제가 없다니 다행이에요
아이콘코드라떼(2021-10-12 17:58 작성됨)
안녕하세요. 코드라떼입니다 :)

확인해 주셔서 감사합니다.
아이콘이눋(2021-10-10 18:44 작성됨)
public class Main {

    public static void main(String[] args) {
    Person person = new Person("김나박이", 24, "A");
    System.out.println(person.name);
    System.out.println(person.age);
    System.out.println(person.blood);
    }
}


class Person {
    String name;
    int age;
    String blood;

    Person person(String name,int age,String blood){
        this.name = name;
        this.age = age;
        this.blood = blood;
    }
}

이렇게 작성했는데 뭐가 잘못된건지 잘 모르겠네요..
아이콘코드라떼(2021-10-11 09:11 작성됨)
안녕하세요. 코드라떼입니다 :)

코드상으로는 잘못된 것이 없어 보이는데 어떤 문제를 겪고 있는지 알 수 있을까요?


이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io
사업자등록번호 : 824-06-01921
통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호
파일
파일파일
Root
파일

실습해보세요의 코드를 작성해보세요.

Output
root$
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의객체를 좀 더 손쉽게 초기화해보다 - 생성자최종수정일 2021-11-21
아이콘약 6분

인스턴스를 생성하고 데이터를 삽입하는 방법으로 Dot 연산자를 이용하여 데이터를 삽입했었는데요. 이번엔 인스턴스를 초기화할 때 데이터를 삽입하는 방법을 배워봅시다.

추가 노트

목차


  1. 생성자

  2. this 키워드

  3. [실습해보기] 생성자를 이용하여 클래스를 만들어보자

1. 생성자


인스턴스를 생성하려면 생성자가 항상 필요합니다.

  1. 생성자가 없으면 인스턴스를 만들 수 없습니다.

  2. 생성자는 클래스 이름과 동일해야 합니다.

  3. 생성자는 인스턴스 생성시 한번만 호출되는 특징을 가지고 있습니다.

class Person {
    String name;
    int age;
    String sex;

    // 생성자와 매개변수 
    Person(String name, int age, String sex) { 
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
}

Default 생성자

생성자를 명시적으로 선언하지 않는 경우 자동적으로 Default 생성자를 생성합니다.

class Person {
    String name;
    int age;
    String sex;

    // 컴파일러가 default 생성자를 주입한다.
}

인스턴스 생성

클래스의 생성자를 통해 인스턴스를 생성할 수 있습니다.

class Person {
    String name;
     int age;
    String sex;

    //생성자와 매개변수 
    Person(String name, int age, String sex) { 
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
}
Person person = new Person("이름", 1, "female");

2. this 키워드


this 키워드는 자기 자신 Person 클래스를 지칭합니다. this 키워드를 통해 Person 클래스 스코프 내의 멤버 변수에 접근할 수 있습니다.

*이후의 Call By Value 강의에서 this는 인스턴스의 참조값을 나타내는 것을 알 수 있습니다. 지금은 넘어가세요.

접근할 수 있는 클래스 스코프 내에서 생성자의 매개 변수명과 멤버 변수명이 동일할 경우 this 키워드를 통해 멤버 변수에 접근할 수 있습니다.

class Person {
    String name;
    int age;
    String sex;

    // 생성자와 매개변수 
    Person(String name, int age, String sex) { 
        this.name = name;
        // this.name은 클래스의 멤버 변수를 지칭하고
        //name은 매개 변수를 지칭한다.
        this.age = age;
        // this.age는 클래스의 멤버 변수를 지칭하고
        // age는 매개 변수를 지칭한다.
        this.sex = sex;
        // this.sex는 클래스의 멤버 변수를 지칭하고
        // sex는 매개 변수를 지칭한다.

    }
}

3. [실습해보기] 생성자를 이용하여 클래스를 만들어보자


case 1

코드 작성(Person.java)

class Person {
    String name;

    Person(String name) {
        this.name = name;
    }
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {
        Person person = new Person("김철수");
        System.out.println(person.name);
    }
}

출력

김철수

case 2

코드 작성(Person.java)

class Person {
    String name;
    int age;

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {
        Person person = new Person("김철수", 20);
        System.out.println(person.name);
        System.out.println(person.age);
    }
}

출력

김철수
20

case 3

코드 작성(Person.java)

class Person {
    String personName;
    int personAge;
    String personGender;

    Person(String name, int age, String gender) {
        personName = name;
        personAge = age;
        personGender = gender;
    }
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {
        Person person = new Person("김철수", 20, "male");
        System.out.println(person.personName);
        System.out.println(person.personAge);
        System.out.println(person.personGender);
    }
}

출력

김철수
20
male
도전자 질문
아이콘이눋(2021-10-11 17:40 작성됨)
생성자를 생성하고 추가로 person 이라는 이름을 지정해줘서 오류가 났던거였습니다ㅋ큐ㅠㅠ. 감사합니다. 코드 상으로는 크게 문제가 없다니 다행이에요
아이콘코드라떼(2021-10-12 17:58 작성됨)
안녕하세요. 코드라떼입니다 :)

확인해 주셔서 감사합니다.
아이콘이눋(2021-10-10 18:44 작성됨)
public class Main {

    public static void main(String[] args) {
    Person person = new Person("김나박이", 24, "A");
    System.out.println(person.name);
    System.out.println(person.age);
    System.out.println(person.blood);
    }
}


class Person {
    String name;
    int age;
    String blood;

    Person person(String name,int age,String blood){
        this.name = name;
        this.age = age;
        this.blood = blood;
    }
}

이렇게 작성했는데 뭐가 잘못된건지 잘 모르겠네요..
아이콘코드라떼(2021-10-11 09:11 작성됨)
안녕하세요. 코드라떼입니다 :)

코드상으로는 잘못된 것이 없어 보이는데 어떤 문제를 겪고 있는지 알 수 있을까요?


이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io|운영시간 09:00 - 18:00(평일)
사업자등록번호 : 824-06-01921|통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호(경기창조혁신센터)
파일
파일파일
Root
파일

실습해보세요의 코드를 작성해보세요.

Output
root$