클래스

Mia Lee·2021년 11월 18일
0

JAVA

목록 보기
43/98
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)와 클래스 타입은 같지만
		//    서로 다른 인스턴스로 취급됨
		//    => 따라서, 관리하는 데이터가 다르다!
		
	}

}

package ex_class;

/*
 * 하나의 java 파일 내에 여러개의 클래스를 정의할 수 있다.
 * => 단, java 파일명과 동일한 클래스에만 public 키워드를 사용
 * 
 */

// 학생(Student) 클래스 정의
class Student {
	// 인스턴스 멤버변수 선언
	// 1. 학생 이름(name, 문자열)
	// 2. 학생 반 이름(className, 문자열)
	// 3. 학생 나이(age, 정수)
	String name; // 기본값 null로 초기화
	String className; // 기본값 null로 초기화
	int age; // 기본값 0으로 초기화
	
}

public class Ex2 {

	public static void main(String[] args) {
		
		// Student 클래스의 인스턴스 생성(변수명 s1)
		Student s1 = new Student();
		
		// Student 인스턴스 생성 시 기본값 확인
		// s1 인스턴스의 각 인스턴스 멤버변수에 접근하여 데이터 출력
		System.out.println("이름 : " + s1.name);
		System.out.println("과정명 : " + s1.className);
		System.out.println("나이 : " + s1.age);
		
		System.out.println("==============================");
		
		// 각 인스턴스 변수값 초기화 및 출력
		// 이름 = 각자 이름
		// 과정명 = 쉽게 배우는 자바 웹 개발자 취업 과정B
		// 나이 = 각자 나이
		s1.name = "박장범";
		s1.className = "쉽게 배우는 자바 웹 개발자 취업 과정B";
		s1.age = 20;
		
		System.out.println("이름 : " + s1.name);
		System.out.println("과정명 : " + s1.className);
		System.out.println("나이 : " + s1.age);

	}

}





















0개의 댓글