참조 - 형태만 물려받는 것이기때문에 1 : n 의 참조도 가능하다.
들은게 없으니까 충돌이 일어나지 않기때문
↳ 인터페이스( interface ) : 틀, 구조, 형태이며, 내용은 소지할 수 없다
인터페이스 구조
접근권한 interface 인터페이스명{
내용 → 변수, 메소드가 들어가지만 보편적으로 내용은 들어가지 않는다.
}
인터페이스 참조시 아래와 같이 인터페이스의 메소드들을 오버라이딩해야된다.
접근권한 class 클래스명 implements 인터페이스명, { }
+) 인터페이스명은 ( 대문자 i ) "I ~~"로 짓는다
추상화( abstract ) - 형태가 불명확하다. → 객체생성불가능( 객체는 완전해야되기때문 )
추상화는 라이브러리 제공 or 기본 기능 제공과 형태제공을 동시에 할경우
-> 다른 기능들은 다 만들어놓고 설정을 받을 때 근데 abstract로 제공할 때도 있음
-> 다른데서 만든 걸 가져다쓸 때 필요
접근권한 abstract class 클래스명 {
내용~~
접근권한 abstract 반환타입 메소드명(인자타입 인자명,~~);
}
[인터페이스, 추상화 예제]
package day1203;
public interface ITest14 {
public void test(); // 내용이없는상태 겉의 형태만 잡아놓은 것 내용이없는 메소드
}
package day1203;
public abstract class Test14A {
public void TestA() {
System.out.println("멀쩡한 메소드");
}
public abstract void TestB(); // 미완성메소드
}
package day1203;
public class Test14C extends Test14A implements ITest14{
//오버라이딩해줘야함 안하면 에러. Test14A가 미완성클래스여서
//ITest14의 인터페이스를 물려받고 Test14A를 부모클래스로하는 Test14C자식클래스
@Override
// @ -> 어노테이션(Annotation) : 지시자 보조설명해주는 애 명시적으로
//구분만해줌 기능은 없음 머릿말
public void test() {
System.out.println("test");
}
@Override
public void TestB() {
System.out.println("오버라이딩 메소드");
}
}
패키지 - 폴더개념, 파일위치를 관리하겠다.
기본패키지를 먼저 만들어두고 +a 형태를 취함
기본패키지의 구조
com.gd.test.etc -> 도메인
com -> 국가코드자리 보편적으로 com 사용 한국어용은 kr
gd -> 회사명
test -> 서비스메뉴
용도에 맞게 패키지구분
controller -> 조작영역, 기능부분, 공용기능
service -> ~~
util -> ~~
etc~~~
기본패키지외의 기능을 사용하려한다면 *import가 필요하다
*import : 해당파일이 어디 있는지를 가져옴
ex) java.util.ArrayList;
ArrayList기능이 뿐만아닌 util패키지의 기능을 다 사용하라면
import java.util.*; .*을 사용
List : 순차적 데이터 보관, 크기제한 X, 누적형태
↳ ArratList : 배열기반
↳ LinkedList : 주소기반
List<타입클래스> list1 = new ArrayList<타입클래스>();
ArrayList<타입클래스> list 2 = new ArrayList<타입클래스>90;
<타입클래스, ~ > => 제네릭 : 형태지정
List<String> list = new ArrayList<String>();
//타입클래스는 문자열 List는 데이터크기를 선언하지않아도 데이터를 넣으면 알아서 지정됨
.add(값) : 값을 추가한다
→ .add("가나다");
.add(인덱스번호, 값) : 인덱스번호 위치에 값을 추가한다.
→ list.add(0,"ABC");
.get(인덱스번호) : 인덱스번호 위치에 해당하는 값을 가져온다
→ System.out.println(list.get(0));
.indexOf(값) : 값의 위치를 찾는다.
.lastIndexOf(값) : 값의 위치를 뒤에서부터 찾는다.
→ System.out.println(list.indexOf("가"));
→ System.out.println(list.lastindexOf("가"));
.contains(값) : 값의 존재여부 확인
→ System.out.println(list.contains("가"));
.remove(값) : 인덱스번호에 해당하는 값을 제거하고 다음값들을 댕김 // list는 빈공간을 허용안함
→ list.remove(0);
→ System.out.println(get.list(0)); => "ABC" 는 제거되고 "가나다"만 출력
.set(인덱스번호,값) : 인덱스번호의 내용을 주어진 값으로 바꿈
→ list.set(0,"라마바");
→ System.out.println(list.get(0)); => "가나다"가 "라마바"로 바뀌어 출력
.size() : 리스트의 크기를 가져옴
→ System.out.println(list.size()); => "라마바"만 있어서 1 출력
.toString() : 문자열로가져옴
→ System.out.println(list.toString); => [라마바]
.isEmpth(); : 비어있는지 확인
→ System.out.println(list.isEmpth()) => false
.clear() : 모든 내용 제거
→ list.clear();
'Java 시작' 카테고리의 다른 글
(21-12-02) [ 카멜, 파스칼, 스네이크 표기법 / Math 클래스 / 상속 / 오버라이딩과 오버로딩 / 객체생성 ] (0) | 2021.12.03 |
---|---|
(21-11-29) [다차원배열 / 클래스 / 메소드 / 생성자 / 스캐너] (0) | 2021.11.29 |
(21-11-25) [기본 자료형의 형변환 / 문자열과 관련된 명령어 / 배열] (0) | 2021.11.26 |
자바기초 (0) | 2021.11.24 |
자바 2일차 임시 (0) | 2021.11.23 |