본문 바로가기

Java 시작

(2021-12-03) [ 참조, 추상화, 패키지, List ]

참조 - 형태만 물려받는 것이기때문에 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();