코드 작성
package ex_class; public class Ex1 { public static void main(String[] args) { /* * - 클래스를 정의한 뒤 반드시 인스턴스를 생성해야만 해당 클래스에 대한 실체화가 되고, * 실체화 된 인스턴스를 통해 변수에 데이터를 저장하거나 메서드를 호출하여 동작을 수행 가능 * * 구현 - Person 클래스의 인스턴스 생성 및 사용 * * < 객체(인스턴스) 사용 순서 > * 1. 클래스타입 변수 선언 * 2. new 연산자를 사용하여 클래스의 인스턴스 생성 * 3. 생성된 인스턴스의 주소를 참조 변수에 저장 * 4. 주소가 저장된 참조 변수를 통해 인스턴스에 접근하여 사용 * * < 클래스타입 변수 선언 기본 문법 > * 클래스명 변수명; * * < 클래스 인스턴스 생성 및 주소 저장 기본 문법 > * 변수명 = new 클래스명(); * * < 생성된 인스턴스 접근 방법 > * 변수명.멤버변수명 또는 변수명.메서드명() * */ // 일반 변수 사용 예시 // 변수 선언 String name; // 변수에 데이터 저장 name = "홍길동"; // 변수 데이터 출력 System.out.println(name); System.out.println("======================="); // 클래스타입 변수(p) 선언 // Person p; // 인스턴스 생성 및 주소 저장 // p = new Person(); // 위의 두 문장을 한 문장으로 결합 Person p = new Person(); // 인스턴스가 생성되면 클래스 내의 멤버변수가 인스턴스 내의 메모리에 생성됨(실제 데이터 저장 가능) // 이 때, 인스턴스 내의 멤버변수에 접근하려면 클래스 변수인 참조 변수(p)를 통해 인스턴스에 접근해야함 p.name = "홍길동"; // 참조변수 p를 따라가서 멤버변수 name에 접근 // => 해당 멤버변수에 문자열 "홍길동"을 저장 // 멤버변수 age에 접근하여 정수 20을 저장 p.age = 20; // Person 인스턴스의 멤버변수에 저장된 값을 출력 System.out.println("이름 : " + p.name); System.out.println("나이 : " + p.age); System.out.println("타입 : " + p.type); // Person 인스턴스의 talk(), eat() 호출 p.talk(); p.eat(); System.out.println("================================="); /* * 두번째 Person 인스턴스 생성(변수 p2 사용) * => 이름 : 이순신, 나이 : 40, 타입 : 장군 * */ Person p2 = new Person(); p2.name = "이순신"; p2.age = 40; p2.type = "장군"; System.out.println("이름 : " + p2.name); System.out.println("나이 : " + p2.age); System.out.println("타입 : " + p2.type); System.out.println("이름 : " + p.name); System.out.println("나이 : " + p.age); System.out.println("타입 : " + p.type); // => 홍길동이 저장된 Person 인스턴스(p)와 클래스 타입은 같지만 // 서로 다른 인스턴스로 취급됨 // => 따라서, 관리하는 데이터가 다르다! } }
클래스의 정의법과 인스턴스 생성 및 접근법!
출력 결과
홍길동
=======================
이름 : 홍길동
나이 : 20
타입 : 사람
사람 객체의 말하기 동작!
사람 객체의 먹기 동작!
=================================
이름 : 이순신
나이 : 40
타입 : 장군
이름 : 홍길동
나이 : 20
타입 : 사람
나의 소감
뭔가 점점 복잡해지는 기분인데...
그래도 무언가를 만들어 내는 기분이라서 하고나면 뿌듯(?)하다 ♬
'JAVA' 카테고리의 다른 글
클래스 & 메서드 | 21/11/18 (0) | 2022.01.06 |
---|---|
클래스 2 | 21/11/18 (0) | 2022.01.06 |
메서드 연습 | 21/11/16 (0) | 2022.01.06 |
메서드 | 21/11/16 (0) | 2022.01.06 |
do ~ while문 | 21/11/15 (0) | 2022.01.06 |