
Getter
getXXX() 형식Setter
class Student {
// private 멤버 변수 (외부에서 직접 접근 불가)
private String name;
private int age;
// Getter (매개변수 없음, return 값 있음)
public String getName() {
return name; // name을 리턴
}
public int getAge() {
return age; // age를 리턴
}
// Setter (매개변수 있음, return 값 없음)
public void setName(String name) {
this.name = name; // 전달받은 값을 멤버 변수에 저장
}
public void setAge(int age) {
this.age = age; // 전달받은 값을 멤버 변수에 저장
}
}
public class Main {
public static void main(String[] args) {
Student s = new Student();
// Setter 사용 (값 넣기)
s.setName("홍길동");
s.setAge(23);
// Getter 사용 (값 꺼내기)
System.out.println("이름: " + s.getName());
System.out.println("나이: " + s.getAge());
}
(참고)
-> 객체지향 원칙 중 '정보은닉'이 있는데, private로 숨겨놓은 필드를 getter로 조회하고, setter로 수정할 수 있다면, 정보은닉 원칙을 해칠 수 있기 때문에 지양하는 것이 좋다고 한다!
-> 추후 백엔드 공부할 때 자세히 공부하면 좋을 것 같다.
규칙 : 메서드 이름, 인자, 리턴 타입이 동일해야 한다.
효과 : 메서드 이름, 인자, 리턴 타입이 기존 코드와 동일하므로 코드를 따로 수정하지 않고, 변경된 내용을 반영할 수 있다.
🌟 super()
super.메서드이름super.속성Abstract는 final, static과 같이 쓸 수 없다.
부모에서 abstract로 선언했을 때, 자식은 무조건 이에 관한 내용이 구현되어 있어야 한다.
static을 붙이면 메모리에 미리 올라가기 때문에 객체 생성없이 클래스명으로 접근이 가능하다.
종류: Arrays.binarySearch(), Arrays.toString(), Arrays.sort(), Math.random(), Math.ceil() 등
int 타입 : Integer.compare()
문자열 타입 : 비교대상.compareTo(내 대상)
Comparator : 해당 클래스가 Comparable을 구현하지 않았거나, 다른 방식으로 정렬할 때 Comparator를 두 번째 인자로 전달한다.
형태: Arrays.sort(기준 데이터, 람다식)
1) 정의 : 함수 안에 자신의 함수를 다시 호출하는 함수
2) for문과의 차이
🌟 재귀함수와 for문의 차이를 코드로 표시
for (int i = 0; i < 10; i++) {
// 반복할 코드
}
for (초기값; 중단 조건; 반복을 중단하기 위한 유도값) { }
// 반복문은 자체적으로 반복을 유도한다.
public static void a(int i) {
// 중단 조건: 기저 조건
if (i == 10) return;
a(i+1) // 반복하기 위한 유도값
}
🌟 재귀함수 작성 방법
1) 기저 조건 (반복을 중단하기 위한 조건)
2) 특정 조건일 때 반복(재귀) 유도
🌟 Bottom-Up, Top-Down 형태
1) Bottom-Up : 오름차순 정렬
2) Top-Down : 내림차순 정렬
public class FactorialTest {
static int N = 5;
static int total = 1; // 누적곱 <- 0으로 하면 누적곱 = 0
// 기저조건 Bottom -> up (오름차순)
public static void print1(int i) {
if (i > N) return;
total *= i;
print1(i+1);
}
public static void main(String[] args) {
total = 1;
print1(1);
}
}
객체지향 부분은 백엔드를 배워야 내가 뭐가 궁금하고, 부족할 지 알 수 있을 것 같다.
6시에 일어나기 성공했다 ㅜ
객체지향은 학교 강의 재수강 + 부트캠프 강의를 들어도 매번 새로운 것 같다.. 자바랑 하염없이 멀어지는 중
그리고 알고리즘을 실제로 풀어봐야 자바 문법에 익숙해질 것 같다
TIL 작성하는 법은 아래 링크를 참고했다. 오늘 공부한 내용 전체는 노션을 통해 정리하고, TIL에서는 유독 어려웠던 파트를 정리하는 편이 깔끔할 것 같다
더 열심히..........