둘째마당, 자바의 핵심. 객체 지향 프로그래밍
05) 클래스와 객체 1
객체란?
개체를 먼저 정의하고 각 객체가 어떤 기능을 제공하고 객체 간 협력을 어떻게 구현할 것인지 고민
클래스란?
클래스는 객체의 속성과 기능을 코드로 구현한 것.
*클래스 이름은 대문자로 하는 게 관습
ex) '학생'이라는 객체
클래스 이름은 Student
클래스 속성은 (=특성, =멤버변수) 학번, 이름, 학년, 사는 곳
(접근 제어자) class 클래스 이름 {
멤버 변수;
메서드;
}
메서드란?
예를 들어 학생과 관련된 기능을 구현할 수 있다.
메서드 = 멤버 함수
함수 호출과 스택 메모리
함수를 호출하면 그 함수만을 위한 메모리 공간이 할당 됨.
클래스 사용과 main()함수
main( )함수에서 클래스를 사용하는 방법은 두가지
1. 우리가 만든 클래스 내부에 main( )함수를 만드는 것 (해당 클래스가 시작 클래스가 된다.)
2. 외부에 테스트용 클래스를 만들어 사용하는 것
new 예약어로 클래스 생성
클래스형 변수이름 = new 생성자;
클래스가 생성된다는 것은 클래스를 실제 사용할 수 있도록 메모리 공간(힙메모리)에 올린다는 뜻
이렇게 실제로 사용할 수 있도록 생성된 클래스를 '인스턴스' (student1 변수와 student2변수는 각각 인스턴스)
인스턴스를 가리키는 클래스형 변수를 '참조 변수' (참조 변수.멤버 변수, 참조 변수.메서드)
생성자란?
생성자가 하는 일은 클래스를 처음 만들 때 멤버 변수나 상수를 초기화하는 것입니다.
디폴트 생성자는 자동으로 생성 됨.
생성자를 직접 만들면 디폴트 생성자는 자동으로 만들어지지 않음.
public class Person{
string name;
float height;
public Person() {} //디폴트 생성자
public Person(String pname){ //직접 만든 생성자
name = pname;
}
=> 이렇게 생성자가 두 개 이상 제공되는 경우를 생성자 오버로드(constructor overload)라고 합니다.
참조 자료형이란?
기본 자료형(int, char 등)이 아니라 클래스 자료형이나 JDK에서 제공하는 클래스(string, data 등)로 선언하는 것
정보 은닉
접근 제어자가 필요한 이유!
public class MyDateTest {
public static void main(String[] args){
MyDate date = new MyDate();
date.month = 2;
date.day = 31;
date.year = 2018;
}
}
위 코드는 2월은 28일 혹은 29일까지 있지만 31일로 대입되었다.
이러한 오류를 피하기 위해 아래와 같이 MyDate 클래스의 멤버변수를 private로 바꿔주고 get(), set()함수를 이용하자.
public class MyDate{
private int day;
private int month;
private int year;
public setDay(int day) {
if(month == 2){
if(day < 1 || day > 28){
System.out.println("오류입니다.");
} else {
this.day = day;
}
}
}
}
접근 제어자 | 설명 |
public | 외부 클래스 어디에서나 접근할 수 있습니다. |
protected | 같은 패키지 내부와 상속 관계의 클래스에서만 접근할 수 있고 그 외 클래스에서는 접근할 수 없습니다. |
아무것도 없는 경우 | default이며 같은 패키지 내부에서만 접근할 수 있습니다. |
private | 같은 클래스 내부에서만 접근할 수 있습니다. |
'개발 > Java' 카테고리의 다른 글
Java] Do it 자바 프로그래밍 입문 요약 (둘째마당 - 07) (0) | 2019.06.14 |
---|---|
Java] Do it 자바 프로그래밍 입문 요약 (둘째마당 - 06) (0) | 2019.06.14 |
Java] Do it 자바 프로그래밍 입문 요약 (첫째마당 - 04) (0) | 2019.06.11 |
Java] Do it 자바 프로그래밍 입문 요약 (첫째마당 - 03) (0) | 2019.06.11 |
Java] Do it 자바 프로그래밍 입문 요약 (첫째마당 - 02) (0) | 2019.06.11 |