클래스
자바가 제공하는 기본자료형 만으로는 프로그램 하기가 어려울때에 사용자가 직접 자료형을 만들 수 있습니다.
또, 기본자료형을 여러개 모아서 하나의 세트를 만들어야 하는 경우가 있습니다.
이러할 때에 사용자는 클래스를 만들어 사용할 수 있습니다.
즉, 클래스란 "사용자 정의 자료형"이라고 말할 수 있습니다
클래스는 여러가지 변수들과 메소드들로 구성될 수 있습니다.
class Student
{
String name;
int kor;
int eng;
int math;
int tot;
double avg;
}
class StudentTest01
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int n;
n = 100;
}
}
기본자료형 변수는 선언하고 값을 바로 저장할 수 있습니다
Student s;
s.name = "홍길동";
그러나 참조자료형인 객체참조변수는 선언하고 바로 값을 저장할 수 없습니다
사용하려면 반드시 객체참조변수를 통해서 new연산자를 이용하여 객체를 생성하고 사용할수 있습니다
s = new Student();
s.name = "홍길동";
라고 하고 s를 통해서 맴버변수를 사용할 수 있습니다.
다음의 객체를 참조하는 배열의 경우를 봅시다.
Student [] arr = new Student[5];
위의 문장은 Student의 객체를 생성한 것이 아니라 Student의 객체를 참조할 수 있는 배열을 5개 만든 것입니다.
위의문장은 마치 Student의 변수 5개만 만든 것이라고 보면 됩니다.
Student arr1;
Student arr2;
Student arr3;
Student arr4;
Student arr5;
Student 변수 5개를 만든 것입니다.
따라서
arr[0].name = "홍길동";
이라고 바로 사용 할 수 없으며
arr[0] = new Student();
라고 객체를 생성한 후 사용할 수 있습니다.
객체지향 프로그래밍
==> Object Oriented Programming (OOP)
==> 현실세계의 모든 것을 객체화 할 수 있다.
내가 눈으로 볼 수 있는 것일 수도 있고 눈에 보이지 않는 개념적인 것일 수도 있다.
객체라고 하는 것은 이 세상에서 단 하나 밖에 없는 유일 한 것 입니다.
그 객체들은 객체를 구성하기 위한 여러가지 속성들로 구성되어 있습니다.
또, 어떠한 객체들을 기능을 할 수도 있습니다. 그 객체에 마땅한 속성을 요구해야 하고 기능을 요구해야 합니다.
이러한 객체를 만들기 위해서는 그 객체를 표현하기 위한 틀을 만들어하는데 그것을 "클래스"라고 합니다.
따라서 클래스란 객체를 표현하기 위한 틀이며 사용자자 새롭게 만드는 "자료형"으로 생각합니다.
클래스는 자료형입니다!
class Student{
어쩌구 저쩌구...
}
int n;
Student s;
위의 두문장은 수준이 같습니다. n도 변수명이고 s도 변수명입니다. int도 자료형이고 Student도 자료형입니다.
멤버변수, 멤버메소드(멤버함수)
건우가 손에 아이폰을 들고 이스트백을 메고 은행에 들어갑니다.
건우, 아이폰, 이스트백, 은행, 손
위의 현상에서 손은 건우의 손이고 든다, 멘다, 들어간다는 건우가 하는 동작입니다.
"건우"라는 객체를 만들기 위해서는 "사람"이라는 클래스를 먼저 만들어야 합니다.
또한, 위의 현상을 표현하기 위해서는 사람이라는 클래스를 만들때에 "손"이라는 속성과 "든다","멘다","들어간다"라는 동작을 만들어야 합니다.
따라서 클래스를 만들때에는 내가 표현해야 하는 객체에 대하여 "속성"과 "동작"을 먼저 분석하여 설계해야 합니다.
"속성"을 "맴버변수"라 하고 "동작"을 "맴버메소드"라고 합니다.
'프로그래밍 공부 정리 > java' 카테고리의 다른 글
this키워드, 생성자 (0) | 2021.10.23 |
---|---|
객체지향 프로그래밍의 특징 1) 은닉성(Encapsulation) (0) | 2021.10.22 |
아스키코드 (0) | 2021.10.20 |
참조자료형, 메소드,return (0) | 2021.10.19 |
다차원 배열 (0) | 2021.10.18 |