학생이 늘어날 때 마다 변수를 추가해야 하는 단점이 있다.
다양한 자료형의 데이터를 묶어 관리하고, 데이터를 처리하는 기능까지 함께 관리하는 문법 요소이다.
문제 : 이전 문제에 배열을 사용해야 한다.
클래스와 인터페이스
클래스 : 일반 클래스, 추상클래스
String[] studentNames = {"학생1", "학생2"};
int[] studentAges = {15, 16};
int[] studentGrade = {90, 80};
for (int i = 0; i< studentNames.length; i++){
System.out.println("이름:" + studentNames[i] + "나이:" + studentAges[i] + " 성적 : " + studentGrade[i]);
}
배열을 통해 원하는 값만 넣어서 사용 가능하다. 데이터를 변경할 때 조심해서 제거해야 한다.
3개 배열의 인덱스 순서를 항상 정확하게 맞춰야 한다. = 하지만 좋은 방식은 아니다.
학생이라는 개념을 하나로 묶는 것이다.
클래스에 정의한 변수들을 멤버 변수, 필드 라고 한다.
멤버 변수 : 특정 클래스에 소속된 변수를 멤버 변수라고 한다.
필드 : 데이터 항목을 가르키는 용어이다. DB, 엑셀에서의 데이터 항목
public class Student {
String name;
int age;
int grade;
}
Student student1;
student1 = new Student();
student1.name = "학생1";
student1.age = 15;
student1.grade = 90;
Student student2 = new Student();
student2.name = "학생2";
student2.age = 16;
student2.grade = 80;
System.out.println("이름 :" + student1.name + "나이 " + student1.age + "성적 " + student1.grade);
System.out.println("이름 :" + student2.name + "나이 " + student2.age + "성적" + student2.grade);
클래스를 사용하면 int, String과 같은 타입을 직접 만들 수 있다.
정의타입 설계도가 클래스이다. 클래스를 사용하여 실제 메모리에 만들어진 실체를 객체 = 인스턴스라고 한다. 클래스를 통해서 사용자가 원하는 종류의 데이터 타입을 정의할 수 있다.
Student student1
Student는 타입을 받을 수 있는 변수를 선언한다.
student1 = new Student() // Student 인스턴스 생성한다.
객체를 생성할 때는 new 클래스명()을 사용하면 된다.
String name, int age, int grade 멤버 변수를 가지고 있다.
메모리에 존재하는 객체에 접근해야 한다. .을 사용하여 접근할 수 있다.
Student = student1;
student1 = new Student(); // 메모리 값을 만들어 준다.
student1.name = "학생1";
student1.age = 15;
System.out.println("이름:" + student1.name);
객체가 가져야 할 속성(변수)와 기능(메서드)를 정의한다.
클래스에서 정의한 속성과 기능을 가진 실체이다. 서로 독립적인 상태를 가진다.
student1 학생1의 속성을 가지는 객체이고, student2는 학생2의 속성을 가지는 객체이다.
student1과 student2는 서로 다를 객체이다.
클래스명 참조 변수명=new 생성자();
A a=new A();
클래스, 참조 변수, new 힙메모리에 저장, A() 생성자->객체
특정 클래스로부터 생성된 객체이다.
인스턴스는 객체보다 관계에 초점을 맞춘다. student1은 Student의 객체이다.
student1은 Student의 인스턴스이다. 인스턴스라는 용어를 주로 사용한다.
힙 메모리에 직접 접근할 수 있는 방법이 있다. 위치 정보를 포함하고 있는 참조 변수를 이용하여 객체에 접근 .포인트 연산자
참조 변수명.필드명
참조 변수명. 메서드명()
class A {
int m=3;
void print() {
System.out.println("객체 생성");
}
}
public class CreateObj {
public static void main(String[] args) {
A a=new A(); // 클래스 객체 생성
a.m=5;
System.out.println(a.m);
// 클래스 멤버 활용
// 0필드 활용 : 필드에 값을 읽고/쓰기
a.print();
}
}