참조형 매개변수
변수의 값을 읽고 변경할 수 있다.
반환 타입이 참조형일 경우 복사한 객체의 주소를 반환한다.
인스턴스 메서드
인스턴스 생성 후, 참조 변수. 메서드 이름()으로 호출
인스턴스 맴버와 관련된 작업을 하는 메서드
메서드 내에서 인스턴스 변수 사용 가능
static 메서드(클래스 메서드)
객체 생성 없이 클래스 이름. 메서드 이름()으로 호출
ex) Math.random() 등
인스턴스 멤버와 관련 없는 작업을 하는 메서드
메서드 내에서 인스턴스 변수 사용불가
static은 언제 붙여야 할까?
속성(멤버 변수) 중에서 공통 속성에 static 붙인다.
인스턴스 멤버를 사용하지 않는 메서드에 static 붙인다.
오버로딩
하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것
오버로딩이 성립하기 위한 조건
- 메서드 이름이 같아야 한다.
- 매개변수의 개수 또는 타입이 달라야 한다.
- 반환 타입은 영향 없다.
오버로딩의 올바른 예 - 매개변수는 다르지만 같은 의미의 기능 수행
생성자
인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
이름이 클래스와 같아야 한다.
클래스 이름(타입 변수명, 타입 변수명, ...) {
// 인스턴스 수행될 코드,
// 주로 인스턴스 변수의 초기화 코드를 적는다.
}
생성자 this()
생성자에서 다른 생성자 호출할 때 사용
같은 클래스의 다른 생성자 호출 시 첫 줄에서만 사용 가능
참조변수 this
인스턴스 자신을 가리키는 참조변수
인스턴스 메서드(생성자 포함)에서 사용 가능
지역변수와 인스턴스 변수를 구분할 때 사용
상속
기존의 클래스로 새로운 클래스를 작성하는 것
두 클래스를 부모와 자식의 관계를 맺어주는 것
자손은 조상의 모든 멤버를 상속받는다.
자손의 멤버 개수는 조상보다 적을 수 없다.
자손의 변경은 조상에 영향을 미치지 않는다.
포함관계
포함
클래스의 멤버로 참조 변수를 선언하는 것
작은 단위의 클래스를 만들고 이들을 조합해서 클래스를 만든다.
class Point {
int x;
int y;
}
class Circle {
point c = new Point();
int r;
}
상속관계 : ~은 ~이다.(is-a)
포함관계 : ~은 ~을 가지고 있다.(has-a)
Object 클래스 - 모든 클래스의 조상
부모가 없는 클래스는 자동적으로 Object클래스를 상속받게 된다.
모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다.
toString(), equals(), hashCode(), ...
오버라이딩
상속받은 조상의 메서드를 자신에 맞게 변경하는 것
오버라이딩 조건
- 선언부(반환 타입, 메서드 이름, 매개변수 목록)가 조상 클래스의 메서드와 일치해야 한다.
- 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
- 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
참조변수 super
객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자) 내에만 존재
조상의 멤버를 자신의 멤버와 구별할 때 사용
super() - 조상의 생성자
조상의 생성자를 호출할 때 사용
조상의 멤버는 조상의 생성자를 호출해서 초기화
생성자의 첫 줄에 반드시 생성자를 호출해야 한다. 그렇지 않으면 컴파일러가 생성자의 첫 줄에 super()를 삽입
import문
java.lang 패키지의 클래스는 import하지 않고도 사용 가능
import 패키지명.클래스명;
import 패키지명.*;
static import문
static멤버를 사용할 때 클래스 이름을 생략할 수 있게 해 준다.
import static java.lang.System.out;
import static java.lang.Math.*;
class EX {
public static void main(String[] args) {
// System.out.println(Math.random());
out.println(random());
//System.out.println(Math.PI);
out.println(PI);
}
}
'개발 > Java' 카테고리의 다른 글
자바의 정석 - 기초편 [컬렉션프레임웍과 핵심 인터페이스 ~ HashSet(1)] (0) | 2022.07.13 |
---|---|
자바의 정석 - 기초편 [연결된예외 ~ 래퍼클래스] (0) | 2022.07.11 |
자바의 정석 - 기초편 [인터페이스와 다형성 ~ 사용자정의예외 만들기, 예외 되던지기] (0) | 2022.07.07 |
자바의 정석 - 기초편 [제어자 ~ 인터페이스의 선언, 상속, 구현] (0) | 2022.07.06 |
자바의 정석 - 기초편 [기본형, 객체지향 ~ 기본형 매개변수] (0) | 2022.06.30 |