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);
}
}