본문 바로가기

JAVA

클래스 | 21/11/18

 

코드 작성
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