클래스는 여러 함수와 변수를 한 번에 묶어서 관리하기 위해 사용된다.
public static void main(String[] args) {
// 이 코드는 한계가 있다.
String[] studentNames = {"학생1", "학생2", "학생3", "학생4"};
int[] studentAges = {15, 16, 17, 20};
int[] studentGrade = {90, 80, 80, 60};
for(int i = 0; i < studentNames.length; i++){
System.out.println("이름 : " + studentNames[i] + " 나이 : " + studentAges[i] + " 성적 : " + studentGrade[i]);
}
}
이름, 나이, 성적을 따로 나누어 관리하면 관리하기 좋은 방식이 아니다. -> 하나로 묶어주어야 한다. 객체를 생성
클래스를 사용해서 학생이라는 개념을 만들고, 학생 별로 본인의 이름, 나이, 성적을 관리하는 것이다.
public class Student {
String name;
int age;
int grade;
}
= 멤버 변수, 필드는 같은 뜻이다.
클래스를 사용하면 int, String과 같은 타입을 직접 만들 수 있다.
사용자가 직접 정의하는 사용자 정의 타입을 만들려면 설계도가 필요하다. = 클래스
실제 메모리에 만들어진 실체를 객체 또는 인스턴스라고 한다.
Student student1
Student 타입을 받을 수 있는 변수를 선언한다.
int는 정수를, String은 문자를 담을 수 있듯이 Student는 Student타입의 객체(인스턴스)를 받을 수 있다.
student1 = new Student() // Student 인스턴스 생성
객체를 사용하기 위해 클래스 기반으로 객체(인스턴스)를 생성해야 한다.
new Student() : new는 새로 생성한다는 뜻이다.
클래스 정보를 기반으로 새로운 객체를 생성하라는 뜻이다.
실제 Student 객체(인스턴스)를 생성한다.
객체를 생성할 때 new 클래스명()을 사용한다.
Student클래스는 String name, int age,int grade 멤버 변수를 가지고 있다. 메모리 공간도 함께 확보한다.
class1 Student;
student1 = new class1(); //변수를 통해 학생을 사용할 수 있다.
student1.name = "학생1"; //클래스는 .을 통해 접근 가능하다.
student1.age = 15;
student1.grade = 90;
class1 student2 = new class1();
student2.name = "학생2";
student2.age = 15;
student2.grade = 80;
System.out.println(student1);
System.out.println(student2);
System.out.println("이름: " + student1.name + " 나이: " + student1.age + " 성적 : " + student1.grade);
System.out.println("이름: " + student2.name + " 나이: " + student2.age + " 성적 : " + student2.grade);
객체를 생성하기 위한 '틀', '설계도' 객체가 가져야 할 속성(변수)와 기능(메서드)를 정의한다.
클래스에서정의한 속성과 기능을 가진 실체이다. 객체는 서로 독립적인 상태를 가진다.
student1, student2는 같은 클래스에서 만들어졌지만 다른 객체이다.
특정 클래스로부터 생성된 객체를 의미한다. student1객체는 Student클래스의 인스턴스이다.
클래스에서 나온 실체라는 의미에서 비슷하게 사용, 인스턴스는 객체보다 좀 더 관계에 초점을 맞춘 단어이다. student1은 Student의 인스턴스이다. 라고 특정 클래스와의 관계를 명확히 할 때 인스턴스라는 용어를 주로 사용한다. = 관계지향적이다. 보통 둘을 구분하지 않고 사용한다.