본문 바로가기
프로그래밍/Java

JAVA 정리

by minNa2 2023. 5. 30.

- 메소드 오버로딩(overloading) (어노테이션 X)
: 메소드 이름이 같고, 매개변수 선언이 다른

- 메소드 오버라이딩(overriding) (어노테이션 O)
: 부모 클래스가 가지고 있는 메소드를 
  자식 클래스가 다시 만드는 것, 동일한 원형 다른 내용

// 상속 관계가 아닌 다른 클래스에서 메소드명이 같으면 그건 그냥 우연



- 첫 글자 대문자 Car : 클래스
- 첫 글자 소문자 car() : 메소드
- 합체 Car() : 생성자(기본 생성자/풀 생성자)



- 객체 : 클래스를 사용하기 위한 요소
- static : 객체를 생성하지 않고 사용(공유)
- final : 상수(값 바꾸지 않을 때)
- static final : 값이 변하지 않는 클래스 상수(초기화 필요)



- setter : 필드에 값을 저장하는 메소드들
- getter : 필드의 값을 읽어오는 메소드들, 무조건 return
c = str.charAt(0)
// charAt() : getter 개념
// c에 값 대입 : setter 개념




Person p = new Student( ) // 업캐스팅((부모 것만 사용 가능)
Student s = (Student)p // 다운캐스팅(자식 것만 사용 가능)

- 1 : 1 관계일 때
Student s = new Student() // 이것만 써도 괜찮음(자식이 부모 다 포함해서)
// Person p = new Person() 이거 안 써도 괜찮음

- 1 : N 관계일 때 (자식 여러개)
1) 배열 안에 넣어서 한번에 관리
// 하나씩 선언해서 관리
Person p1 = new Student();
Person p2 = new Worker();
Person p3 = new beaksu();

// 반복문으로 관리
Person[] parr;
for(int i = 0; i<parr.length; i++){
  parr[i].eat();
  if(parr[i] instanceof Student){   // 클래스가 Student에서 업캐스팅 했으면 if문 돌기
  
 }
}

2) 부모와 자식의 일대일 관계라면 업캐스팅이 필요없지만 자식이 2명이상이라면 업캐스팅이 필요하다(배열안에 넣어서 안에 있는 데이터만 관리하면된다)



- 추상 메소드: 자식들한테 물려주기 위해 형태만 갖고 있음(자식이 구현)
- 추상 클래스 : 추상 메소드 존재

- 인터페이스
1) 생성자가 없어서 객체 생성 X (new 사용 X)
2) 상수는 반드시 선언과 동시에 초기값을 지정
3) 추상 메소드라 실행 블록(중괄호) 없음
4) 상속은 클래스 1개만 가능하지만 구현은 여러개 구현 가능
5) 구현도 상속의 일종이라 업캐스팅 가능



- 500 에러 : 자바(이클립스) 콘솔 확인
- 404 에러 : URL 확인



- 제네릭 : 미리 타입 정해둠(데이터를 넣기 전에 타입 체크해서 문제 사전 방지), 참조 타입 들어감(Integer, Double, String ...)
- 비제네릭 코드
List list = new ArrayList();
list.add("hello");
String str = (String)list.get(0);  // 타입 변환을 해야 한다.

- 제네릭 코드
List<String> list =  new ArrayList<String>();  // 이 List에는 String만 넣겠다고 선언
list.add("hello");
String str = list.get(0);  // 타입 변환을 하지 않는다.



- List : 순서가 있는 데이터의 집합, 중복 O
- Set : 순서가 없는 데이터의 집합, 중복 X(알아서 중복 제거)
- Map : key, value 형식으로 사용, 순서가 없는 데이터의 집합, key는 중복 X, value는 중복 O

- 반복자 (Interator) 메소드
1) hasNext() : 다음 요소에 읽어 올 요소가 있는지 확인하는 메소드 있으면 true 없으면 false 반환.
2) next() : 다음 요소를 가져온다.
3) remove() : next()로 읽어온 요소 삭제한다.

- ArrayList : 비순차적 접근이 느리다.
- LinkedList : 중간 데이터 삭제에 유리하다.

- HashSet : add 한 순서를 유지하려면 LinkedHashSet 클래스 사용
- TreeSet : 트리 모양, 검색의 효율성 높임

- HashMap : key, value 구조(자바스크립트에서 객체도 동일), key들로만 저장되어 있어서 순서가 없다.

반응형

'프로그래밍 > Java' 카테고리의 다른 글

0419  (0) 2023.04.20
0417~18  (0) 2023.04.20
0414  (0) 2023.04.14
0412  (0) 2023.04.12
0411  (0) 2023.04.11