[자바 무료 강의] 클래스에 객체의 속성을 만들다 - 멤버 변수 - 코드라떼
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의클래스에 객체의 속성을 만들다 - 멤버 변수최종수정일 2021-11-21
아이콘약 8분

객체에 속성을 부여하는 방법은 클래스에 멤버 변수를 선언하면 됩니다. 멤버 변수가 무엇인지 그리고 객체에 속성을 어떻게 부여하는지 알아봅시다.

추가 노트

목차


  1. 멤버 변수, 인스턴스 변수, 정적 변수

  2. [실습해보기] 멤버 변수를 만들어보자

1. 멤버 변수, 인스턴스 변수, 정적 변수


멤버 변수

클래스 내에 선언된 변수를 멤버 변수라고 하며, 멤버 변수에는 인스턴스 변수정적 변수가 있습니다.

class Person {
    String name; // 인스턴스 변수
    int age; // 인스턴스 변수
    String sex; // 인스턴스 변수
    static string nationality = “korea”; // 정적 변수
}

인스턴스 변수

인스턴스를 생성 후에 접근 가능한 변수를 인스턴스 변수라고 하며, 인스턴스 변수는 인스턴스의 생성과 소멸 생명주기와 동일합니다. 인스턴스가 소멸하면 인스턴스 변수도 소멸합니다.

Person person1 = new Person();
person1.name = “록카”; // 인스턴스 변수
person1.sex = “female”; // 인스턴스 변수

정적(static) 변수

인스턴스를 생성하지 않아도 접근 가능한 변수를 정적 변수라고 합니다. 또는 클래스 변수라고 부릅니다. nationality 정적 변수는 모든 Person 클래스에서 동일한 메모리를 참조하기 때문에 변수를 공유한다고도 볼 수 있습니다.

정적 변수는 인스턴스의 생성과 소멸 생명주기와 상관없이 프로그램이 시작되면 메모리에 적재되기 때문에 인스턴스 생성 없이 접근할 수가 있습니다.

String nation = Person.nationality; // 정적 변수

2. [실습해보기] 멤버 변수를 만들어보자


실습도구에 해당 코드를 작성해 봅시다

image


1. 인스턴스 변수 만들기

인스턴스 변수 선언하기

코드 작성(Person.java)

class Person {
    String name;
    int age;
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {

        Person person1 = new Person();
        // TODO : 해당 인스턴스에 값을 저장
        person1.name = "김철수";
        person1.age = 17;

        Person person2 = new Person();

        // TODO : 해당 인스턴스에 값을 저장
        person2.name = "김나연";
        person2.age = 27;

        // TODO: 인스턴스의 변수 값을 출력

        System.out.println(person1.name);
        System.out.println(person1.age);

        System.out.println(person2.name);
        System.out.println(person2.age);
    }
}

출력

김철수
17
김나연
27

2. 정적 변수 만들기

정적 변수 선언하기

코드 작성(Person.java)

class Person {
    static String job = "개발자"; 
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {
 
        System.out.println(Person.job);

        Person person1 = new Person();
        Person person2 = new Person();

        System.out.println(person1.job);
        System.out.println(person2.job);
    }
}

출력

개발자
개발자
개발자

정적 변수 공유 확인하기

코드 작성(Person.java)

class Person {
    static String job = "개발자"; 
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {
 
        System.out.println(Person.job);

        Person.job = "마케터";

        Person person1 = new Person();
        Person person2 = new Person();

        System.out.println(person1.job);
        System.out.println(person2.job);
    }
}

출력

개발자
마케터
마케터
도전자 질문
아이콘upqnu(2022-06-11 21:21 작성됨)
정적 변수 공유 확인하기 - 코드를 오른쪽 창에서 아래와 같이 옮겨서 실행했더니 에러가 나타났습니다. 어떤 부분이 잘못됐을까요?

public class Main {
    class Person {
        static String job = "개발자"; 
    }
    
    public static void main(String[] args) {
 
        System.out.println(Person.job);

        Person.job = "마케터";

        Person person1 = new Person();
        Person person2 = new Person();

        System.out.println(person1.job);
        System.out.println(person2.job);
    }
}
아이콘코드라떼(2022-06-12 22:00 작성됨)
안녕하세요. 코드라떼입니다 :)

Main 클래스내에 또하나의 클래스를 작성하는 것을 inner class라고 하는데요. 자바 8 언어에서는 inner class내에 정적 변수를 선언할 수 없습니다.

감사합니다 :)
아이콘nurselatte(2021-08-24 15:12 작성됨)
person.java와 main.java가 다른것인가요? 두개를 구분해서 작성해야하는 이유가 있나요?
아이콘코드라떼(2021-08-25 21:02 작성됨)
안녕하세요. 코드라떼입니다.

Person.java는 Person 클래스를 구현한 파일이고 Main.java는 프로그램의 진입점(Entry Point)인 main 정적 메서드가 존재하는 파일입니다. main 정적 메서드가 꼭 Main.java 파일의 Main 클래스 내에 존재할 필요는 없으나 반드시 특정한 클래스 내에는 존재해야 합니다. 그리고 편의상 Main 클래스 내에 작성했습니다. '일반적으로' 객체(클래스)를 만들 때 특별한 사유가 있지 않는 이상 파일별로 만듭니다. 클래스 이름과 java 파일의 이름은 동일해야 합니다.

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

추가노트의 실습해보기의 코드를 보고 인스턴스 변수와 정적 변수를 작성해보세요.

Output
root$
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의클래스에 객체의 속성을 만들다 - 멤버 변수최종수정일 2021-11-21
아이콘약 8분

객체에 속성을 부여하는 방법은 클래스에 멤버 변수를 선언하면 됩니다. 멤버 변수가 무엇인지 그리고 객체에 속성을 어떻게 부여하는지 알아봅시다.

추가 노트

목차


  1. 멤버 변수, 인스턴스 변수, 정적 변수

  2. [실습해보기] 멤버 변수를 만들어보자

1. 멤버 변수, 인스턴스 변수, 정적 변수


멤버 변수

클래스 내에 선언된 변수를 멤버 변수라고 하며, 멤버 변수에는 인스턴스 변수정적 변수가 있습니다.

class Person {
    String name; // 인스턴스 변수
    int age; // 인스턴스 변수
    String sex; // 인스턴스 변수
    static string nationality = “korea”; // 정적 변수
}

인스턴스 변수

인스턴스를 생성 후에 접근 가능한 변수를 인스턴스 변수라고 하며, 인스턴스 변수는 인스턴스의 생성과 소멸 생명주기와 동일합니다. 인스턴스가 소멸하면 인스턴스 변수도 소멸합니다.

Person person1 = new Person();
person1.name = “록카”; // 인스턴스 변수
person1.sex = “female”; // 인스턴스 변수

정적(static) 변수

인스턴스를 생성하지 않아도 접근 가능한 변수를 정적 변수라고 합니다. 또는 클래스 변수라고 부릅니다. nationality 정적 변수는 모든 Person 클래스에서 동일한 메모리를 참조하기 때문에 변수를 공유한다고도 볼 수 있습니다.

정적 변수는 인스턴스의 생성과 소멸 생명주기와 상관없이 프로그램이 시작되면 메모리에 적재되기 때문에 인스턴스 생성 없이 접근할 수가 있습니다.

String nation = Person.nationality; // 정적 변수

2. [실습해보기] 멤버 변수를 만들어보자


실습도구에 해당 코드를 작성해 봅시다

image


1. 인스턴스 변수 만들기

인스턴스 변수 선언하기

코드 작성(Person.java)

class Person {
    String name;
    int age;
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {

        Person person1 = new Person();
        // TODO : 해당 인스턴스에 값을 저장
        person1.name = "김철수";
        person1.age = 17;

        Person person2 = new Person();

        // TODO : 해당 인스턴스에 값을 저장
        person2.name = "김나연";
        person2.age = 27;

        // TODO: 인스턴스의 변수 값을 출력

        System.out.println(person1.name);
        System.out.println(person1.age);

        System.out.println(person2.name);
        System.out.println(person2.age);
    }
}

출력

김철수
17
김나연
27

2. 정적 변수 만들기

정적 변수 선언하기

코드 작성(Person.java)

class Person {
    static String job = "개발자"; 
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {
 
        System.out.println(Person.job);

        Person person1 = new Person();
        Person person2 = new Person();

        System.out.println(person1.job);
        System.out.println(person2.job);
    }
}

출력

개발자
개발자
개발자

정적 변수 공유 확인하기

코드 작성(Person.java)

class Person {
    static String job = "개발자"; 
}

코드 작성(Main.java)

public class Main {
    public static void main(String[] args) {
 
        System.out.println(Person.job);

        Person.job = "마케터";

        Person person1 = new Person();
        Person person2 = new Person();

        System.out.println(person1.job);
        System.out.println(person2.job);
    }
}

출력

개발자
마케터
마케터
도전자 질문
아이콘upqnu(2022-06-11 21:21 작성됨)
정적 변수 공유 확인하기 - 코드를 오른쪽 창에서 아래와 같이 옮겨서 실행했더니 에러가 나타났습니다. 어떤 부분이 잘못됐을까요?

public class Main {
    class Person {
        static String job = "개발자"; 
    }
    
    public static void main(String[] args) {
 
        System.out.println(Person.job);

        Person.job = "마케터";

        Person person1 = new Person();
        Person person2 = new Person();

        System.out.println(person1.job);
        System.out.println(person2.job);
    }
}
아이콘코드라떼(2022-06-12 22:00 작성됨)
안녕하세요. 코드라떼입니다 :)

Main 클래스내에 또하나의 클래스를 작성하는 것을 inner class라고 하는데요. 자바 8 언어에서는 inner class내에 정적 변수를 선언할 수 없습니다.

감사합니다 :)
아이콘nurselatte(2021-08-24 15:12 작성됨)
person.java와 main.java가 다른것인가요? 두개를 구분해서 작성해야하는 이유가 있나요?
아이콘코드라떼(2021-08-25 21:02 작성됨)
안녕하세요. 코드라떼입니다.

Person.java는 Person 클래스를 구현한 파일이고 Main.java는 프로그램의 진입점(Entry Point)인 main 정적 메서드가 존재하는 파일입니다. main 정적 메서드가 꼭 Main.java 파일의 Main 클래스 내에 존재할 필요는 없으나 반드시 특정한 클래스 내에는 존재해야 합니다. 그리고 편의상 Main 클래스 내에 작성했습니다. '일반적으로' 객체(클래스)를 만들 때 특별한 사유가 있지 않는 이상 파일별로 만듭니다. 클래스 이름과 java 파일의 이름은 동일해야 합니다.

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

추가노트의 실습해보기의 코드를 보고 인스턴스 변수와 정적 변수를 작성해보세요.

Output
root$