setter 함수 : 값을 설정하는 것 (값을 넣거나 변경) 리턴타입이 없음.
getter 함수 : 값을 얻어오는 것. 넘어오는 리턴타입이 있음.
자동 setter getter 함수 설정방법 : 마우스우클릭 -> source -> generater getters and setters
this. => 현재 클래스 지정을 의미
ctrl 누른상태에서 변수에 마우스를 가져가면 손모양이 뜨는데 그 때 그 손모양 표시를 누르면 어디에서 쓰이고 있는지 확인 가능.
package는 대문자로 시작하면 안됨. 소문자로 시작해야 함.
-------------------------------------------------
<생성자 함수> - 굉장히 많이 사용하기 때문에 아주 중요함.
생성자함수란 객체를 생성하는 함수 (반드시 클래스명이랑 똑같아야 함)
- 그래서 일반함수는 소문자로 시작하는 반면, 생성자함수는 대문자로 시작 가능한거임(클래스명이니깐).
- 그래서 생성자함수 이름의 첫 글자가 대문자로 시작하는 것이 관례.
- class의 멤버변수를 private으로 선언하고(정보보안 이슈로) 멤버변수 밑에 일반적으로 위치 해 있다.
- new연산자를 사용 (생성자함수는 new 연산자와 함께 호출됨.)
- new연산자는 객체를 생성하고, 생성된 객체를 생성자함수의 this변수에 할당함.
- 기본 생성자함수는 매개변수(ex. int a, int b)가 없는 함수임.
- ★ 생성자함수 오버로딩해서 사용가능 (그러나 이 때 내용물이 입혀졌다면 기본 생성자함수는 사용할 수 없기에 추가로 만들어주기)
- 생성자함수는 함수라고 하지 메소드라는 표현 안씀.
- 생성자함수는 리턴타입이 없어서 리턴타입 지정 자체를 안함.
- 생성자함수에서는 this.변수를 사용하여 객체의 데이터와 메소드를 초기화할 수 있음.
생성자 함수는 다음과 같은 경우에 사용됨.
객체의 데이터를 초기화하려는 경우
객체의 메서드를 초기화하려는 경우
객체의 특정 상태를 확인하거나 설정하려는 경우
// 예시 :
Person 클래스의 생성자 함수
이 생성자함수는 name과 age라는 두 개의 데이터를 초기화함.
// 풀이 :
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
여기서,
생성자함수를 사용하여 객체를 생성하려면 다음과 같이 실행.
// 예시 :
Person person = new Person("Crystal", 19);
// 풀이 :
Person 클래스의 생성자 함수를 호출하여 "Crystal"라는 이름과 19라는 나이를 가진 객체를 생성.
생성자함수에는 기본생성자와 매개변수가 있는 생성자가 있음.
기본 생성자는 매개변수가 없는 생성자임.
기본 생성자는 객체를 생성하고, 생성된 객체의 데이터를 기본값으로 초기화함.
매개변수가 있는 생성자는 매개변수를 사용하여 객체의 데이터를 초기화함.
-------------------------------------------------
// 생성자 함수 설정
package oop;
public class Person {
// Person 이라는 클래스를 정의.
// Person 클래스는 personNo, name, tel, addr 4개의 변수와 output()이라는 메소드를 가지고 있음.
private int personNo;
private String name, tel, addr;
// setter & getter 함수를 만들어라. (마우스우클릭->Source)
// 생성자함수 만들고
// setPerson()함수 만들고
// output()함수 만들어라.
// 생성자함수 오버로딩 (제대로 이해할 것. 매우 중요함.)
public Person(int personNo, String name, String tel, String addr) {
this.personNo = personNo;
this.name = name;
this.tel = tel;
this.addr = addr;
}
// 기본 생성자함수
public Person() {
this(333,"골드","010-7777-8888","구로구 대륭포스트 8차");
}
// 여러값을 한번에 초기화하는 함수 생성
void setPerson(int personNo, String name, String tel, String addr) {
this.personNo = personNo;
this.name = name;
this.tel = tel;
this.addr = addr;
}
public int getPersonNo() {
return personNo;
}
public void setPersonNo(int personNo) {
this.personNo = personNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
void output() { // 정보 출력
System.out.println("번호 : " + personNo + "\t" + "이름 : " + name);
System.out.println("전화번호 : " + tel + "\t" +"주소 : " + addr);
}
}
// 데이터
package oop;
public class PersonMain {
public static void main(String[] args) { // main() 메소드는 Person 클래스의 객체를 2개 생성
// Person p1 = new Person(); // 첫번째 객체인 p1 생성
// p1.personNo = 123;
// p1.name = "크리스탈";
// p1.tel = "010-1234-5678";
// p1.addr = "구로구 대륭포스트 3차";
// p1.output(); // 첫번째 객체의 output() 메소드 호출
Person p1 = new Person(); // 첫번째 객체인 p1 생성
p1.setPersonNo(123);
p1.setName("크리스탈");
p1.setTel("010-1234-5678");
p1.setAddr("구로구 대륭포스트 3차");
p1.output(); // 첫번째 객체의 output() 메소드 호출
System.out.println("--------------------------------------");
// Person p2 = new Person(); // 두번째 객체인 p2 생성
// p2.personNo = 456;
// p2.name = "다이아몬드";
// p2.tel = "010-9012-3456";
// p2.addr = "구로구 대륭포스트 4차";
// p2.output(); // 두번째 객체의 output() 메소드 호출
Person p2 = new Person(); // 두번째 객체인 p2 생성
p2.setPersonNo(456);
p2.setName("다이아몬드");
p2.setTel("010-9012-3456");
p2.setAddr("구로구 대륭포스트 4차");
p2.output(); // 두번째 객체의 output() 메소드 호출
System.out.println("--------------------------------------");
Person p3 = new Person(); // 세번째 객체인 p3 생성
p3.setPerson(789, "플래티늄", "010-1111-2222", "구로구 대룡포스트 5차");
p3.output();
System.out.println("--------------------------------------");
Person p4 = new Person(); // 세번째 객체인 p4 생성
p4.setPerson(111, "루비", "010-3333-4444", "구로구 대륭포스트 6차");
p4.output();
System.out.println("--------------------------------------");
Person p5 = new Person(222, "사파이어", "010-5555-6666", "구로구 대륭포스트 7차");
p5.output();
System.out.println("--------------------------------------");
Person p6 = new Person();
p6.output();
}
}
// 결과값
// 생성자 함수 설정
// 데이터
// 결과값
// 생성자 함수 설정
package oop.constructor;
public class Book {
// Book 이라는 클래스를 정의.
// Book 클래스는 bookNo, bookTitle, writer 3개의 변수와 output()이라는 메소드를 가지고 있음.
private String bookNo, bookTitle, writer;
private int price;
// setter & getter 함수를 만들어라. (마우스우클릭->Source)
// 생성자함수 만들고
// setBook()함수 만들고
// output()함수 만들어라.
// 생성자함수 오버로딩 (제대로 이해할 것. 매우 중요함.)
public Book(String bookNo, String bookTitle, String writer, int price) {
this.bookNo = bookNo;
this.bookTitle = bookTitle;
this.writer = writer;
this.price = price;
}
// 기본 생성자함수
public Book() {
this("0101ㄱ23", "Story4", "Mackee",30000);
}
// 여러값을 한번에 초기화하는 함수 생성
void setBook(String bookNo, String bookTitle, String writer, int price) {
this.bookNo = bookNo;
this.bookTitle = bookTitle;
this.writer = writer;
this.price = price;
}
public String getBookNo() {
return bookNo;
}
public void setBookNo(String bookNo) {
this.bookNo = bookNo;
}
public String getBookTitle() {
return bookTitle;
}
public void setBookTitle(String bookTitle) {
this.bookTitle = bookTitle;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
void output() { // 정보 출력
System.out.println("책번호 : " + bookNo);
System.out.println("책제목 : " + bookTitle);
System.out.println("책저자: " + writer);
System.out.println("책단가: " + price);
System.out.println("--------------------");
}
}
// 데이터
package oop.constructor;
import java.util.Scanner;
public class BookMain {
public static void main(String[] args) {
// Book b1 = new Book("1234ㄱ56", "Story", "Mackee",20000);
// b1.output();
// Book b2 = new Book();
// b2.output();
// Book b3 = new Book();
// b3.setBook("8790ㄱ34", "Story2", "Mackee", 40000);
// b3.output();
// Book 정보들을 저장할 배열 생성
Book[] b = new Book[3];
// b[0] = b1;
// b[1] = new Book("7890ㄱ12", "Story3", "Mackee", 30000);
// b[2] = b3;
// 배열 각 방에 객체 생성하기
String bookNo, bookTitle, writer;
int price;
for (int i=0; i<b.length; i++) {
Scanner sc = new Scanner(System.in);
Systehttp://m.out.print("책번호: "); bookNo = sc.nextLine();
Systehttp://m.out.print("책제목: "); bookTitle = sc.nextLine();
Systehttp://m.out.print("책저자: "); writer = sc.nextLine();
Systehttp://m.out.print("책단가: "); price = sc.nextInt();
System.out.println("-----------------------");
b[i] = new Book(bookNo, bookTitle, writer, price);
}
int sum = 0;
for (int i=0; i<b.length; i++) {
sum += b[i].getPrice();
b[i].output();
}
System.out.println("책 총합계:" +sum);
}
}
// 결과값
'JAVA' 카테고리의 다른 글
<JAVA_PreClass_231023월> (2) | 2023.10.23 |
---|---|
<JAVA_PreClass_231020금> (2) | 2023.10.20 |
<JAVA_PreClass_231018수> (2) | 2023.10.18 |
<JAVA_PreClass_231017화> (0) | 2023.10.17 |
<JAVA_PreClass_231016월> (0) | 2023.10.16 |