Java Basic: Class

2 분 소요

char 와 int

char은 원래 하나의 문자를 저장하기 위한 자료형이다. 그런데 char로 작은 수의 정수를 표현할 수도 있다. 또, char 문자를 저장하고 그것을 int로 형변환을 하면 그 문자에 대한 정수값을 가져 올 수 있다. 각 문자마다 정해진 정수값이 있다. 그것을 “아스키코드값”이라고 한다.

대문자’A’의 아스키코드 값은 65 그 다음 문자들은 1씩 증가

소문자’a’의 아스키코드 값은 97

char ch = ‘A’ 라고 하고 System.out.println(ch) A출력

System.out.println(ch+1) 수식을 만나면 ch를 정수로 변환하여 연산을 한다. 즉 화면에 ‘A’의 65 + 1

System.out.println((char)(ch+1))

연산한 결과 66의 문자인 ‘B’ 가 출력이 된다.

int k = 65;
System.out.println((char)k);	//문자 'A'출력

.next() //공백은 입력x .nextLine() //공백도 입력받을 수 잇따

객체와 클래스

클래스

자바가 제공하는 기본 자료형만으로는 프로그래밍 하기가 어려울때에 사용자가 직접 자료형을 만들 수 있다. 기본자료형을 여러개 모아서 하나의 세트를 만들어야 하는 경우가 있다. 이러할 때에 사용자는 클래스를 만들어 사용할 수 있다.

즉, 클래스란 “사용자 정의 자료형”이다.

클래스는 여러가지 변수들과 메소드들로 구성될 수 있다.

기본 자료형 변수는 선언하고 값을 바로 저장할 수 있다.

Student s; 그러나 참조자료형인 객체참조변수는 선언하고 바로 값을 저장할 수 없다. s.name = “홍길동”; 위와 같이 사용하려면 반드시 객체참조변수를 통해서 new 연산자를 ㅇ용하여 객체를 생성하고 사용할 수 있다. s = new Student(); 라고 하고 s를 통해서 멤버변수를 사용할 수 있다. s.name = “홍길동”;

다음의 객체를 참조하는 배열의 경우를 보자 Student []arr = new Student[5];

위의 문장은 Student의 객체를 생성한 것이 아니라 Student의 객체를 참조할 수 있는 배열을 5개 만든 것이다. 위의 문장은 마치 Student의 변수 다섯개만 만든거라고 보면 된다. Student의 변수 5개를 만든것이다.


객체지향 프로그래밍

Object Oriented Programming(OOP) 현실세계의 모든 것을 객체화 할 수 있다. 내가 눈으로 볼 수 있는 것일수도 있고 눈에 보이지 않는 개념적인 것일 수도 있다.

객체라고 하는 것은 이 세상에서 단 하나 밖에 없는 유일한 것이다.

그 객체들은 객체를 구성하기 위한 여러가지 속성들로 구성되어 있다. 또, 어떠한 객체들을 기능을 할 수도 있다.

그 객체 마땅한 속성을 요구해야 하고 기능을 요구해얗 ㅏㄴ다.

이러한 객체를 만들기 위해서는 그 객체를 표현하기 위한 틀을 만들어야 하는데 그것을 “클래스”라고 한다.

따라서, 클래스란 객체를 표현하기 위한 틀이며 사용자가 새롭게 만드는 “자료형”

클래스는 자료형이다!

class Student{ 어쩌구 저쩌구.. }

int n; Student s;

위의 두 문장은 수준이 같다 n도 변수명이고 s도 변수명이다. int도 자료형이고 Student도 자료형이다.

클래스를 만들때에는 내가 표현해야 하는 객체에 대하여 “속성”과 “동작”을 먼저 분석하여 설계해야 한다. “속성”을 멤버변수라고 하고 동작을 멤버메소드라고 한다.


객체지향 프로그래밍의 특징

1) 은닉성(Encapsulation) 객체를 구성하고 잇는 속성들을 대체로 외부에 노출하지 않도록 만들어야 함. 권한이 있는 메소드만이 속성에 접근하도록 만드는 것이 일반적! 그렇다고 모든 속성과 동작을 전부다 감추어 놓으면 이 클래스 자체를 사용할 수 없다.

그래서 어떤것은 감추고, 어떤것은 아무나 다 사용하라는
**"접근명시자"**가 있다.
#### 접근명시자의 종류
* private
	외부로 노출하지 않을때 사용

* public 
	아무나 다 사용해도 좋을때 사용

일반적으로 클래스를 만들때에
속성인 멤버변수들은 private에 두고 
동작인 멤버메소드들은 public에 두어서 만든다.

그래서, 
private에 있는 멤버변수에 직접 접근할 수 없고
접근하는 메소드를 만들어둔다.

접근해서 멤버의 값을 변경하는 메소드는
setXXX()로 만들고	-> setter 설정자

접근해서 멤버의 값을 읽어오는 메소드는
getXXX()로 만드는 것이 일반적.	->getter 접근자