♨학습내용
☞ 클래스 정의하는 방법
☞ 객체 만드는 방법 (new 키워드 이해하기)
☞ 메서드 정의하는 방법
☞ 생성자 정의하는 방법
☞ this 키워드 이해하기
- 클래스 정의하는 방법
- 클래스란?
- 자바에서 클래스(class)란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용된다.
- 자바에서는 이러한 설계도인 클래스를 가지고, 여러 객체를 생성하여 사용하게 된다.
- 클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메서드(method)로 구성된다.
- 클래스명
- 클래스명은 첫 글자를 대문자로 하는 명사이여야한다. (권장사항)
- 첫 글자를 따서 줄이거나 약어는 지양한다.
- 첫 글자에는 숫자가 올 수 없다.
- 자바 명령어, 키워드는 사용할 수 없다. (while, for, int 등 사용불가)
- 클래스의 구성멤버 (필드(field), 생성자(constructor), 메서드(method))
- 이 구성 멤버들은 생략되거나 여러 개 작성될 수 있다.
- 필드 : 객체의 데이터가 저장되는 곳이다.
- 생성자 : 객체 생성 시 초기화를 담당한다.
- 메서드 : 메소드는 객체의 동작을 수행하는 블록을 뜻한다.
- 객체 만드는 방법 (new 키워드 이해하기)
- 객체를 만들기 위해서는 new라는 키워드를 써야한다.
Person p;
p = new Person();
- 이렇게 한줄에 작성도 가능하다.
Person p = new Person();
- 여기서 생성된 객체는 어디에 저장되어 있는지 생각해보자.
- 메모리 저장공간은 stack 과 heap이 있다.
- 프리미티브 타입은 stack에 저장되고, 레퍼런스 타입은 heap에 저장된다.
- new라는 키워드는 메모리상에 공간을 할당하고, 할당받은 공간은 주소를 리턴한다.
- 즉, Person은 stack에 저장되고 주소값을 가지고 있으며 new Person()에 의해 생성된 객체는 heap에 저장된다.
- 메서드 정의하는 방법
- 메서드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있다.
접근제어자 리턴타입 메서드명(파라미터) {
return 리턴타입;
}
public int getName(){
return name;
}
- 접근 제어자 : 해당 메서드에 접근할 수 있는 범위를 명시한다.
- 리턴타입(return type) : 메서드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시한다.
- 메서드명 : 메서드를 호출하기 위한 이름을 명시한다.
- 매개변수 목록(parameters) : 메서드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시한다.
- 구현부 : 메서드의 고유 기능을 수행하는 명령문의 집합이다.
- 생성자 정의하는 방법
- 생성자란?
- 클래스가 인스턴스화 될 때, 즉 new 키워드로 인스턴스가 생성될 때 초기화를 담당한다.
- 꼭 정의하지 않아도 되며, 여러 개의 생성자를 생성할 수 있다.
public Person{
String name;
Person() {
this("Sim");
}
Person(String name) {
this.name = name;
}
}
Person Sim = new Person();
Person Kim = new Person("Kim");
- 오버로딩 (overlodaing)
- 매개변수의 타입, 개수, 순서를 달리 한 생성자를 여러 개 선언하는 것이다.
public class Product {
Product(){ } //기본생성자
Product(String name, int price){ ... } //매개변수 String , int 받는 생성자
Product(String name, String color, int price, ){ ... } //매개변수 String , String ,int 받는 생성자 }
- this 키워드 이해하기
- this는 객체(인스턴스) 자기자신을 가리키는 지정자로, parameter와 필드명이 똑같을 때 구별짓기 위해서 사용한다.
- this() 메서드는 생성자 내부에서만 사용할 수 있으며, 같은 클래스의 다른 생성자를 호출할 때 사용한다.
- this() 메서드에 인수를 전달하면, 생성자 중에서 메서드가 일치하는 다른 생성자를 찾아 호출해준다.
- 호출 방법
1. 클래스의 속성과 생성자/메소드의 매개변수의 이름이 같은 경우
public class Person {
String name;
public void setName(String name) {
this.name = name;
}
}
2. 클래스에 오버로딩된 다른 생성자 호출
public class Person {
String name;
int age;
Person() {
this("아이유", 29);
}
Animal(String name, int age) {
this.name = name;
this.age = age;
}
}
3. 객체 자신의 참조값을 전달하고 싶을 때
public class Person {
String name;
int age;
Person() {
}
Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person getPerson() {
return this;
}
}
'Study > Java_study' 카테고리의 다른 글
Java_study_7 (패키지) (0) | 2021.08.11 |
---|---|
Java_study_6 (상속) (0) | 2021.08.09 |
Java_study_4 (제어문) (0) | 2021.08.01 |
Java_study_3 (연산자) (0) | 2021.07.26 |
Java_study_2 (자바 데이터 타입, 변수 그리고 배열) (0) | 2021.07.26 |