생성자 : 아무 것도 없는 상태로 메모리에 객체가 생기면 각 필드에 기본값이 들어가 있는데, 특정값으로 초기화 시키고 싶을 때 생성자 이용 (단, 특정값을 초기화시키고 싶을 때 만 사용하는 건 아님)
ex)
생성자 특징
1) 반환 타입이 없음
2) 클래스명을 똑같이 지정해주어야함
기본생성자 - 매개변수가 없는 생성자, 데이터 없으면 jvm이 자동 생성
매개변수 생성자 - 매개변수가 있는 생성자, jvm이 자동으로 생성해주지 않음
메소드에 적용이 되지만 생성자도 메소드의 일부이기 때문에 적용됨
★ 매개변수의 순서가 다르거나 타입이 다르거나 개수가 다른 경우 오버로딩 적용★
ex) 예시
public class User {
private String userId;
private String userName;
private int age;
private double point;
public User () { //내가 스스로 기본 생성자를 만들어야 뒤에서 실행 가능
}
//생성자 (일반적으로는 field와 메소드 사이)
//void 지우고 class랑 이름 동일하게
public User (String id, String name, int nai, double p) {
userId = id;
userName = name;
age = nai;
point = p;
}
public User(String id, String name, int nai) {
userId = id;
userName = name;
age = nai;
// 위 public user 3개는 개수가 달라서 오버로딩이 적용되었음
}
//필드명은 파란색, 지역변수는 노란색으로 표시됨
//필드명과 지역변수 이름이 같을 때는 지역변수가 우선순위
레퍼런스 변수 = 참조 변수 (주소값을 가지고 있는 변수)
내 클래스에 다른 생성자 호출시 사용
생성자 실습 예제)
package com.kh.example.practice4.mode.vo;
public class Book {
private String title;
private String publisher;
private String author;
private int price;
private double discountRate;
public Book() {}
public Book(String title, String publisher, String author) {
this.title = title;
this.publisher = publisher;
this.author = author;
}
public Book(String title, String publisher, String author, int price, double discouneRate) {
this(title, publisher, author); // 위에 있기 때문에 this 생성자 이용
this.price = price;
this.discountRate = discountRate;
}
public void inform() {
}
}
package com.kh.example.practice4.run;
import com.kh.example.practice4.mode.vo.Book;
public class Run {
public static void main(String[] args) {
Book b1 = new Book();
Book b2 = new Book("자바의 정석","행복출판사","남궁성");
Book b3 = new Book("초보자를 위한 리액트 200제", "정보문화사","이정열",15000,0.2);
b1.inform();
b2.inform();
b3.inform();
}
}
반환타입은 무조건 있어야함
반환할 값이 없을 경우 void 사용
메소드 접근제한자
메소드 예약어
메소드 반환형
반환형 메소드 예시)
int : length, next ...
boolean : equals ...
char : charAt ...
double : random ...
배열 : copyOf (배열 안에 있는 값이 아닌, 배열 주소 값이 반환 - 얕은 복사)
가변인자 ex) pintf
메소드 표현식
▲리턴값이 int타입으로 있을 것이다.
return을 쓰고 뭘 반환할것인지 무조건 적어줘야함
getter/setter 메소드
getter : 값을 반환해주는 메소드 (반환타입 있어야함 , 매개 변수 사용x)
setter : 값을 변경해주는 메소드 (반환타입 - void , 매개변수 존재)
메소드 실습 예제)