[Java] 10. 객체지향언어(1)_클래스
객체지향언어
실제 세계의 사물과 모든 상호작용을 가상 세계(컴퓨터)의 데이터와 함수로 정의한 것
기존의 프로그래밍 언어에 몇 가지 새로운 규칙을 추가하여 발전시킨 언어이다.
특징
1. 코드의 재사용성이 높다.
2. 코드의 유지보수가 용이하다.
3. 신뢰성이 높은 프로그래밍이 가능하다.
객체
실제로 존재하는 사물 또는 개념(유형적/무형적 모두 포함)
클래스(Class)
객체를 정의해높은 것, 객체의 설계도이자 틀
인스턴스
클래스로부터 만들어진 객체
인스턴스화 : 클래스로부터 객체를 만드는 과정
※ 객체 ≠ 인스턴스
객체는 모든 인스턴스를 포괄하는 의미, 인스턴스는 어떤 클래스로부터 만들어진 구체적인 것을 말한다.
엄연히 두 용어는 다르지만, 대부분 섞어서 사용된다.
객체의 구성요소 : 속성과 기능
# 속성(property) = 멤버변수(member variable) = 특성(attribute) = 필드(field) = 상태(state)# 기능(function) = 메서드(method) = 함수(function) = 행위(behavior)
→ 클래스 내에 객체의 속성과 기능들을 정의하며, 객체를 사용하기 위해서는 인스턴스를 생성해야 한다.
인스턴스 생성1. 클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수를 선언함2. 변수명 = new 클래스명( ); // 클래스의 객체를 생성한 후, 객체의 주소를 참조변수에 저장함
new 연산자에 의해 인스턴스가 메모리에 생성되면, 각 멤버변수는 해당하는 자료형의 기본값으로 초기화된다.
선언된 참조변수는 생성된 객체(인스턴스)의 주소값을 저장하고 있다.
인스턴스에 접근하기 위해서는 반드시 '참조변수.멤버변수'의 형태로 해야 한다.
또한, 당연하지만 참조변수의 타입은 인스턴스의 타입과 일치해야 한다.
객체 배열(=참조변수 배열)
여러 개의 객체를 다루어야 할 때 사용하는 배열으로, 참조변수들을 하나로 묶어놓은 것이다.
객체 배열을 생성하면 배열의 각 요소들은 참조변수의 기본값인 null로 자동 초기화된다.
Ex) Student[] sArr = new Student[100];
이는 객체 배열을 생성만 한 것으로 인스턴스에 접근가능한 참조변수만 생성되어 있는 것이다.
객체는 생성되지 않았으므로 반드시 객체를 생성하여 각 요소에 저장해주어야 한다!
Ex) sArr[0] = new Student( );
각 요소에는 초기화 또는 for문을 통해 참조변수에 값을 넣어줄 수 있다.
public class exCode {
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(s1.name); //String의 기본값인 null
s1.name = "홍길동";
System.out.println(s1.name); //결과 : 홍길동
Student[] stArr = new Student[5]; //객체 배열 생성
stArr[0] = new Student(); //객체를 생성하여 요소에 저장
stArr[0].grade = 1;
System.out.println(stArr[0].grade); //결과 : 1
stArr[0].gradeUp();
System.out.println(stArr[0].grade); //결과 : 2
stArr[0].gradeDown();
System.out.println(stArr[0].grade); //결과 : 1
}
}
class Student{
String name; //이름
int grade; //학년
void gradeUp() { ++grade;}
void gradeDown() {--grade;}
}