-추상(oop에서 말한 추상화와 비슷)
-> 껍데기만 만들어 놓은 것
oop에서 말한 추상화 -> 나한테 필요한 것만 추려내는 직업
ex)
(추상 클래스)abstract class 음식점 {
(추상 메서드)abstract void 주문(String 주문자명, String 주문자_전화번호, String 음식, String 매운정도);
}
-추상 클래스
하나 이상의 추상 메서드를 포함하는 클래스
추상 메서드가 없어도 상관은 없다
일반적인 인스턴스 변수, 인스턴스 메서드, 클래스 변수, 클래스 메서드를 만들어도 상관 없다
인스턴스를 만들 수 없음 -> 물려줬을 때 의미를 가짐
-interface(class 대신 적는 것)
순도 100%짜리 추상 클래스
interface안에 존재하는 모든 메서드는 추상메서드라서 abstract 생략
interface안에 존재하는 모든 변수는 static 상수라서 static final을 생략
interface는 추상 메서드와 상수만 가질 수 있다
누군가로 하여금 재정의해서 사용할 수 있게 하기 위함
모두가 다 사용할 수 있어야 한다
interface 자체의 의미가 틀을 만들어 놓는 개념이라서 그렇다
능력이 없는 껍데기만 있는 메서드를 가지기 때문에 이 껍데기를 가져다가 실제로 필요한 곳에서 원하는 기능을 사용할 수 있게 해주는 느김
-implements
-상수(final) : 변수가 죽을 때까지 고정되어 있음 = 변하지 않는 값
상수는 재할당 불가능
한 번 초기화 하면 재활당 불가능
static final이 생략되어 있음
-추상 메서드
-abstract가 필요한 이유
설계
의미 전달
이 메서드는 껍데기니까 개발ㄴㄴ -> 자식이 물려받아서 오버라이딩해서 써라
필수X (해도 그만 안 해도 그만) -> 분석, 클래스들간의 구조 설계할 때 사용
자식들이 공통으로 사용할 경우
for문
(초기값; 조건식; 스텝)
ex)
for (int i = 1; i <= 5; i++){
System.out.println(i);
향상된 for문
(순회할 때마다의 값을 넣어줄 변수 : 순회할 요소)
ex)
int[] arr = {1,2,3,4,5};
for (int n : arr) {
System.out.println(n);
}
-자바에 이미 만들어져있는 인터페이스
ArrayList 클래스
-단축키 : ctrl + shift + O
<> : 제네릭
-Arr aylist에 값을 추가할 때 어떤 값이 들어갈 수 있는지에 대한 제약사항
List에서 사용가능한 메서드들 중 우리가 알아야 할 것은 정해져있지 않다
그나마 비교적 자주 쓰이는 것들
add : 추가
get : 조회
size : 크기 (배열에서의 length의 역할)
: 순서에 의미가 있는 데이터들을 관리하는 문법 + 집합
HashMap
key : value = 1: 1
a = key
qwe = value
ex) map.put("a", "qwe");
=a라는 이름을 가진 녀석에게 qwe를 넣을 거야
Map<Integer , Object> map = new HashMap<>();
map.put(1, "qwe");
System.out.println(map.get(1));
출력 결과 = qwe
Map<Integer , Object> map = new HashMap<>();
map.put(1, "qwe");
map.put(2, 123);
map.put(3, 123);
// for (int i = 1; i <= 3; i++) {
// System.out.println(map.get(i));
// }
for (Object o : map.keySet()) {
System.out.println(map.get(o));
= 위의 for과 향상된 for의 결과 값은 동일