클래스란 객체를 생성하기 위해 그 객체가 어떤 데이터를 갖고 어떤 연산을 하는지에 대해 정의합니다.
쉽게 말해 클래스를 사람의 얼굴이라고 가정하였을때 눈, 코, 입, 귀라는 데이터를 가지고 있고 눈으로는 보고, 코로는 냄새를 맡고, 입으로는 맛을 보고, 귀로는 말을 듣는 연산을 수행한다.

이와 같이 Face라는 클래스를 만들고 그안의 연산을 수행하는 코드를 짜보았다.
return 반환값이 없으니 void를 썼으며 아래 main 함수에 호출하는 것을 볼 수 있다.
이때 use_face라는 객체를 생성한다.
객체를 생성하는 방법은 new라는 키워드로 메모리에 할당을 해야한다.
Face use_face = new Face(); 에서 볼 수 있듯이 new 라는 키워드로 메모리에 할당한다.
객체를 생성한 뒤에 . 을 작성해보면 using_eyes, using_nose 등등 수행할 함수들이 있는 것을 볼 수 있다.
이러한 함수들을 수행하면 아래와 같은 결과를 볼 수 있다.

또한,

이렇게 변수를 사용하여 main에서 객체를 생성하여 nose에 대한 재정의를 해줄 수 있다.
결과는 아래와 같다.

원래 nose에는 "코" 라는 String 값이 들어가 있지만 객체를 생성하여 nose 변수에 접근하여 "오똑한 코" 라고 재정의하여 결과를 출력해낼 수 있다.
또한, Student 클래스와 StudentTest 메인클래스를 따로 작성하여 참조 할 수 있다.
예를들어,

Student 클래스에 멤버변수와 생성자와 메서드를 만들어 메인클래스에서 호출하여 코드를 실행 시키는 방식이다.
이때 멤버 변수는 private의 접근제어자를 사용하여 다른 클래스에서 수정할 수 없게 만들어 아래에 setStudentName 과 setGrade라는 메서드를 만들었다. 메인클래스에서 이 메서드를 호출하여 private로 선언된 멤버변수를 수정 할 수 있게 만든것이다.

이렇게 소스를 작성하고 실행시켜보면 아래와 같은 결과값을 볼 수 있다.
성춘향과 이순신은 setStudentName 메서드를 통하여 Student클래스의 studentName 변수에 저장이 되는걸 볼 수 있고, 홍길동은 기본 생성자에 매개변수를 String으로 받아 studentName 변수에 저장 되는걸 볼 수 있다.
메인클래스에서는 Student클래스의 멤버 변수인 studentName 과 grade 변수에 직접적으로 접근하지 못하여 setStudentName, setGrade 메서드에 접근하여 멤버변수에 접근하는것을 볼 수 있다.
