6. 클래스
객체지향 언어
자바는 객체지향 언어로서 다음과 같은 특징을 가진다.
1. 코드의 재사용성
- 새 코드를 작성할 때 기존 코드를 사용하여 코딩하여 코드수를 줄이고 유지보수가 용이해지도록 한다.
2. 신뢰성
- 제어자와 메소드를 사용하여 데이터를 보호 및 코드 중복제거를 하여 오동작을 예방한다.
3. 코드관리의 편리함
- 객체지향은 각각이 연결되어 있어 유지보수에 있어 한부분을 변경하면 전체가 수정된다. 그래서 코드유지보수성이 좋다.
클래스와 객체
클래스는 변수와 함수로 이루어져 있는 설계도와 같은 역할을 수행한다.
인스턴스는 위에 정의한 클래스(설계도)를 통해 만들어진 형태입니다.
클래스는 생성해도 메모리(RAM)상에 존재하지 않지만, 인스턴스로 구현되는 순간부터 존재한다고 할 수 있다.
클래스로 인스턴스를 생성하는 것을
인스턴스화라고 하고 형태는 다음과 같이 2가지로 생성한다.
1. 참조변수를 나중에 설정하는 방법
클래스면 변수명 // 클래스 객체를 참조할 때 쓸 참조변수 생성
변수명 = new 클래스명( ) // 클래스의 객체를 생성하고 객체의 주소를 참조변수에 저장
Car c;
new Car( );
2. 생성과 동시에 참조변수를 설정하는 방법
클래스명 변수명 = new 클래스명( );
Car c = new Car( );
인스턴스 변수와 클래스 변수
인스턴스 변수는 클래스(객체)마다 가지는 고유한 변수입니다. 클래스마다 생성하므로 변수명이 같아도 다른 클래스면 변수에 담기는 값이 다르고
각각이 구분된다.
클래스 변수는 모든 인스턴스(인스턴스화 된 클래스)가 공유된 값을 가진다. 즉 1개만 존재하고 그 값이 모든 인스턴스에 공유된다.
변수앞에 static을 붙여서 변수선언시 사용한다.
클래스변수를 남발하면 필요도 없는 변수를 생성하므로 낭비가 발생하여, 프로그램이 실행할 때 필요하거나, 공유된 값을 가지는 변수만 사용하도록 한다.
메소드 (함수)
메소드(함수)는 기능을 담당한다. 메소드의 기본적인 형태는 다음과 같다
반환타입(리턴과 일치하는 데이터타입) 메소드명(파라미터)
{
// 실행할 내용
// return 값;
}
반환타입 중 void는 반환하는 값이 없다. 파라미터는 메소드에서 입력받을 변수개수와 데이터 타입과 맞게 선언한다.
클래스 멤버(클래스 내용 = 변수 + 함수)와 인스턴스 멤버간의 잠조 및 호출 방법은 한가지만 기억하면 된다.
존재하는 곳에서 존재하지 않는곳을 참조하면 에러가 발생한다. static 등으로 생성된 곳에서 생성하지 않은 곳을 참조하는 순간 에러가 발생한다.
오버로딩
오버로딩은 같은 함수명을 가진 함수들을 정의하는 것을 일컫는다. new로 클래스 주소 생성시 가져갈 파라미터의 수와 데이터 타입이 다르면 함수명이 같더라도
알아서 해당 함수에 찾아 갈 수 있다.
생성자
모든 클래스에는 반드시 하나이상의 생성자가 존재해야된다. 하지만 보통 클래스 정의할 때 생성자를 생성하지 않아도 오류가 발생하지 않았던 이유는 컴팔일러가
자동으로 기본생성자를 생성해주기 때문이다.
기본생성자의 형태는 다음과 같다
클래스명( ){ }
기본생성자와 생성자는 함수지만 반환타입과 void 없어도 return 이 없이 다음과 특별한 형태로 생성되어 구분된다. 생성자는 클래스 내의 변수를 this로 받아서
사용자의 요구사항대로 클래스 내 변수를 제어한다.