반응형
getter, setter
private의 경우 외부에서 사용이 불가하기에 우회하여 사용할 수 있는 getter, setter을 이용한다.
- setter : 데이터를 입력, 파라미터를 넣음
- getter : 데이터를 확인, 리턴 값이 존재
package kr.or.ddit.study06.sec06;
public class PrivateMain {
public static void main(String[] args) {
PrivateTest pt1 = new PrivateTest();
// a가 private일 경우 아래와 같은 식은 불가능. - > get과 set을 사용해야함.
// pt1.a = 10;
}
}
package kr.or.ddit.study06.sec06;
public class PrivateTest {
private int a;
private int b;
public int getA() {
return a;
}
// 메소드를 사용하여 private의 값을 가져옴.
// 문제가 생길 시 아래와 같이 검증하여 데이터를 집어 넣을 수 있음.
public void setA(int a) {
if(a < 0) {
System.out.println("음수는 입력 안되요.");
}
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
}
package kr.or.ddit.study06.sec06;
public class Student {
private int age;
private String name;
// public을 기입하지 않을 시 파일이 들어 있는 패키지에서만 가져올 수 있음
public Student() {
}
Student(String name, int age) {
this.name = name;
this.age = age;
}
// 데이터을 입력할 때
public void setAge(int age) {
if(age<0) {
System.out.println("음수는 입력 불가.");
}
this.age = age;
}
// 데이터를 가져올 때
public int getAge() {
return age;
}
// 데이터를 입력할 때 체크
public void setName(String name) {
if(name.length() > 4) {
System.out.println("4자 이상의 이름은 입력이 불가능.");
return;
}
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Student [age=" + age + ", name=" + name + "]";
}
}
package kr.or.ddit.study06.sec06;
import java.util.Scanner;
public class StudentMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Student st1 = new Student();
int age = sc.nextInt();
st1.setAge(age);
Student st2 = new Student();
int age2 = sc.nextInt();
st2.setAge(age2);
String str = "김철수";
str.length();
System.out.println(st1.getAge());
System.out.println(st2.getAge());
System.out.println(str.length());
}
}
package kr.or.ddit.study06.sec06;
public class Book {
/*
* 책 이름, 저자, 출판일, 가격
*/
private String bookName;
private String bookWriter;
private String regDate;
private int price;
// 기본 생성자
public Book() {
}
public Book(String bookName, String bookWriter, String regDate, int price) {
this.bookName = bookName;
this.bookWriter = bookWriter;
this.regDate = regDate;
this.price = price;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookWriter() {
return bookWriter;
}
public void setBookWriter(String bookWriter) {
this.bookWriter = bookWriter;
}
public String getRegDate() {
return regDate;
}
public void setRegDate(String regDate) {
this.regDate = regDate;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
package kr.or.ddit.study06.sec06;
public class BookMain {
public static void main(String[] args) {
Book b1 = new Book();
// set 데이터를 집어 넣음 | 파라미터 존재
// get 데이터를 가져옴 | 파라미터 없음
b1.setBookName("목소리들");
b1.setBookWriter("이승우");
b1.setRegDate("2023년 11월 30일");
b1.setPrice(16000);
Book b2 = new Book();
b2.setBookName("목소리들");
b2.setBookWriter("이승우");
b2.setRegDate("2023년 11월 30일");
b2.setPrice(16000);
System.out.println(b1.getBookName() + ", " + b1.getBookWriter() + ", " + b1.getRegDate() + ", " + b1.getPrice());
}
}
package kr.or.ddit.study06.sec06;
public class Sing {
/*
* 노래 가사 일부, 노래 제목, 가수.
*/
private String lyrics;
private String title;
private String singer;
public Sing() {
}
public Sing(String lyrics, String title, String singer) {
this.lyrics = lyrics;
this.title = title;
this.singer = singer;
}
public String getLyrics() {
return lyrics;
}
public void setLyrics(String lyrics) {
this.lyrics = lyrics;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSinger() {
return singer;
}
public void setSinger(String singer) {
this.singer = singer;
}
}
package kr.or.ddit.study06.sec06;
public class SingMain {
public static void main(String[] args) {
Sing s1 = new Sing();
s1.setLyrics("가사1");
s1.setTitle("제목1");
s1.setSinger("가수1");
System.out.println(s1.getLyrics() + ", " + s1.getTitle() + ", " + s1.getSinger());
}
}
package kr.or.ddit.study06.sec06;
public class Food {
/*
* 음식 이름, 음식 설명, 조리시간
*/
private String foodName;
private String foodExp;
private int time;
Food() {
}
// 생성자인데(or 메소드인데) 파라미터만 달라짐 -> 오버로딩
Food(String foodName, String foodExp, int time) {
this.foodName = foodName;
this.foodExp = foodExp;
this.time = time;
}
public String getFoodName() {
return foodName;
}
public void setFoodName(String foodName) {
this.foodName = foodName;
}
public String getFoodExp() {
return foodExp;
}
public void setFoodExp(String foodExp) {
this.foodExp = foodExp;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
}
package kr.or.ddit.study06.sec06;
public class FoodMain {
public static void main(String[] args) {
Food f1 = new Food();
f1.setFoodName("음식이름");
f1.setFoodExp("음식 설명");
f1.setTime(3);
System.out.println(f1.getFoodName() + ", " + f1.getFoodExp() + ", " + f1.getTime());
}
}
재귀 함수
: 나 자신을 다시 불러오는 함수
package kr.or.ddit.study06.sec04;
import java.util.Date;
public class Recrucive {
public static void main(String[] args) {
Recrucive rc = new Recrucive();
// rc.call(10);
System.out.println(rc.factorial(5));
System.out.println(rc.fibo(3));
Date d1 = new Date();
Date d2 = new Date();
System.out.println(d2.getTime() - d1.getTime());
}
/*
* 피보나치 수열
* 1 1 2 3 5 8 13 21 34
*/
// 아래와 같은 식으로 할 시 재귀함수의 속도가 느리다는 것을 보완할 수 있다.
long[] result = new long[100];
public long fibo(int num) {
if(num == 1) return 1;
if(num == 2) return 1;
long l = 0;
if(result[num] == 0) {
l = fibo(num-1) + fibo(num-2);
result[num] = l;
} else {
l = result[num];
}
return l;
}
/*
* n을 입력후
* n * n-1 * n-2 ...... * 2 * 1
*/
public long factorial(long num) {
if(num == 1) return 1; // 주석 시 stack Overflow Error 발생 => 종료 조건 필수
return num * factorial(num-1);
}
// 재귀 함수
// 메모리가 잘 커지기에 사용할 때 주의해야 함.
public void call(int num) {
if(num == 0) return;
System.out.println("호출");
call(num-1);
}
}
반응형
'자바' 카테고리의 다른 글
[Java 초급] 17장 상속, 다형성 (2) | 2023.12.26 |
---|---|
[Java 초급] 16.5장 테스트 (0) | 2023.12.22 |
[Java 초급] 15.5.1장 테스트1 (0) | 2023.12.21 |
[Java 초급] 15장 enum 타입, static, 싱글톤 (0) | 2023.12.20 |
[Java 초급] 13.5.2장 테스트2 (0) | 2023.12.19 |