학습 1) 클래스 정의하는 방법
class 클래스 이름 {
}
class 클래스 이름 extends SUPERCLASS implements INTERFACE{
}
- 클래스 정의할 때 가지는 속성들
- 1) 접근제어자
- 2) 클래스이름
- 3) (없을 수도 있다) superclass : 부모 클래스
- 4) (없을 수도 있다) interface
- 5) 클래스의 바디 { } 안
학습 2) 객체 만드는 방법 (new 키워드 이해하기)
- 클래스의 객체가 만들어진 것을 인스턴스를 만들었다고 한다.
- 변수만 선언한 것은 인스턴스를 생성한 것이 아니다.
public class Practice {
public static void main(String[] args) throws ClassNotFoundException {
MadeClass mc;
}
}
- 이렇게 되면 변수만 선언한 것.
- 인스턴스를 생성하기 위해서는
new
를 사용해야 한다
MadeClass mc = new MadeClass();
new
는 객체를 생성하고(힙에) 객체 주소를 반환한다.
- 참조변수에는 이 객체 주소가 저장된다.
- 이 참조변수를 가지고 객체에 접근할 수 있다.
- 참조변수와 연결이 끊긴 객체는 gc가 정리한다.
- 생성한 객체를 변수에 반드시 저장할 필요는 없다. 속성 값을 바로 도출할 수 있다.
int height = new Rectangle().height;
학습 3) 메소드 정의하는 방법
public double calculateAnswer(double wingSpan, int numberOfEngines,
double length, double grossTons) {
//do the calculation here
}
구성요소
- 1) 접근제어자
- 2) return 타입
- 3) 메소드이름
- 4) 파라미터 리스트(
()
안에)
- 5) (예외던질경우) 던질 예외 리스트
- 6) 메소드 바디 (
{}
안에)
- 필수요소는 메서드의 리턴타입, 이름,
{}
, ()
(부호 그 자체)
메소드 오버로딩
- 한 클래스 내에 동일한 명의 메소드가 있을 수 있다.
public class DataArtist {
...
public void draw(String s) {
...
}
public void draw(int i) {
...
}
public void draw(double f) {
...
}
public void draw(int i, double f) {
...
}
}
학습 4) 생성자 정의하는 방법
- 생성자 : 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
- 생성자 이름은 클래스의 이름과 같다
- 생성자는 반환값이 없다
- 생성자는 인스턴스를 초기화 할 때 필요한 작업들을 정리해 주는 것이고 위에서 했든 인스턴스를 만드는 것은
new
키워드
- 클래스 Bicycle의 생성자
public Bicycle(int startCadence, int startSpeed, int startGear) {
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}
Bicycle myBike = new Bicycle(30, 0, 8);
- 클래스에 생성자를 작성하지 않을 수도 있다.
- 컴파일러가 자동으로 생성. 인자가 없는 default 생성자 생성
- 이 기본 생성자는 superclass의 인자가 없는 생성자를 호출한다.
- 생성자를 private으로 선언하고 팩토리메서드를 둬서 객체를 생성했던 기억이 난다.
학습 5) this 키워드 이해하기
- 현재 객체 내에서 메소드나 생성자에서 해당 객체를 호출하기 위해 사용한다.
- static에서는 사용할 수 없다.
- 필드 호출할 때
public class Point {
public int x = 0;
public int y = 0;
//constructor
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
public class Rectangle {
private int x, y;
private int width, height;
public Rectangle() {
this(0, 0, 1, 1);
}
public Rectangle(int width, int height) {
this(0, 0, width, height);
}
public Rectangle(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
...
}
출처