강의 수강 중 작성한 노트에서 내용을 발췌, 이응수 강사님 강의 의 노트와 이미지를 참조하고 있습니다.
스스로 이해를 위해 직접 쓴 문장들의 경우 다소 부정확할 수 있습니다.
has a
관계, is a
관계 로 설명 가능하다.has a
관계 : 포함 관계 / car has a Tire, car has a Engineis a
관계: 상속관계, 구현관계 / Galaxy is a smartphone, Iphone is a smarthone💡 .java 확장자 파일은 개발자용 설계도, 컴파일해서 저장되는 .class 파일은 JVM용 설계도 라고 생각하면 된다.
class 파일로부터 만들어진, 메모리 안에 생성된 객체는 해당 객체의 인스턴스라고 한다.
💡 클래스의 분류
프로그램 대상이 되는 정보를 저장하는 객체를 VO(ValueObject: 값 객체)라고 한다.
⇒ 이처럼 클래스의 각 역할에 따라서 부르는 명칭들이 있다. (VO, DAO, Repository .. )
자바 도큐먼트 주석
을 통해 해당 클래스에 대한 설명을 기재한다.
**메소드 안에서 선언한 변수**
**메소드 밖, 클래스에서 선언한 변수**
프로퍼티, 멤버변수, 인스턴스변수 모두 필드를 의미하는, 같은 말이다.
멤버변수
객체 생성에 참여하는 변수. 생성된 객체에 포함되는 변수. 라는 의미인스턴스변수
객체 생성하면 사용할 수 있는 변수. 라는 의미💡 초기화
선언만 한 필드를 가진 클래스가 new 연산자를 통해 인스턴스를 생성했을 때,
필드의 값에 대한 자동 초기화가 “인스턴스에서” 이루어진다.
접근제한자
반환타입
메소드이름(타입 매개변수명, 타입 매개변수명..)
{해당 메소드가 수행하는 작업에 대한 수행문이 포함됨}
매개변수
: 메소드 실행에 필요한 값을 전달 받아서(=인자값) 저장하는 변수반환타입
: 메소드를 실행하면 획득하게 되는 값(변수)의 타입. 반환값이 없을 경우 void메소드이름
은 동사형으로 붙여준다.
메소드의 사용방식 네가지. println은 표준출력장치로 찍어내는 것이고, 여기서 말하는 입출력은 자바에 값을 넣고 반환하는 것을 말함.
💡 메소드의 호출
- 객체 내부에서의 메소드 호출:
클래스 내부에서 해당 클래스의 다른 메소드를 호출할 경우 메소드 그 자체로 호출한다.메소드(매개값..)
- 객체 외부에서의 메소드 호출:
클래스에서 정의된 메소드를 해당 클래스 외부에서 사용하려면 무조건 클래스의 ‘객체’를 만들어야 한다.
1) 객체 생성클래스 참조변수 = new 클래스(매개값..)
2) 메소드 호출참조변수.메소드(매개값);
타입 변수 = 참조변수.메소드(매개값)
💡 메소드와 객체의 참조
호출하는 메소드에 객체의 참조값을 전달하면 그 메소드도 같은 객체를 참조하게 되고, 그 메소드 안에서 객체의 정보를 변경하면 메소드가 종료된 후에도 유지된다.
💡 메소드 중복정의
- 하나의 클래스에 매개변수의 개수나 타입이 서로 다른 같은 이름의 메소드를 여러 개 정의하는 것. (매개변수의 이름만 바꿔서는 중복정의 x)
- 하나의 메소드에 대하여(유사한 기능에 대하여) 매개변수의 경우의 수가 다양할 때 사용
ex) println()
⇒ 같은 작업을 수행하는 메소드를 일관된 방식으로 사용하기 위함이다.
Person p1 = new Person();
참조변수.생성자메소드();
⇒ 실행불가.public Person() { }
형식으로 생성된다.💡 기본 생성자 메소드가 아닌 다른 어떤 생성자 메소드라도 이미 만들어져 있다면,
기본 생성자 메소드는 ‘자동으로 추가’되지 않는다.
따라서 생성자 메소드의 중복정의를 사용한다면 기본 생성자 메소드는 직접 만들어두는 것이 좋다.
💡 생성자메소드 정의 시 코드의 낭비를 줄이기
- 필드를 매개변수로 하는 생성자 메소드 만들기
기본 생성자메소드 작성 후우클릭 - source -generate Constructor using Field
Lombok
라이브러리를 이용하면 굳이 코드 작성으로 정의하지 않아도 @태그 만으로도 생성자가 만들어진다. ⇒ 소스코드 길이가 줄어든다.