Java - Generic
JAVA(자바), Python(파이썬) 기반의
AI 활용 응용 소프트웨어 개발자 양성 과정
찾으시는 정보가 있으시다면
주제별reference를 이용하시거나
우측 상단에 있는 검색기능을 이용해주세요
26일차 수업
========복습========
추상화
인터페이스, 추상 클래스, 추상 메소드
정의 하려는 것을 미리 사전 정의하는 것
- 프로그램을 만들 때 사용하는 기능들을 담은 목차
오버라이딩을 꼭 사용하도록 구조화 시키는 것
- 부모인 인터페이스나 추상클래스를 상속받으려면 무조건 재정의 후 사용해야함
다형성
변수를 줄이기 위한 기술
하나의 객체가 여러 가지 타입을 가질 수 있는 것
부모의 클래스 타입 참조 변수로 자식의 클래스 타입의 인스턴스를 참조하도록 구현
Object A = new String();
final
변하지 못하게끔 만드는 키워드
클래스 : 상속을 금지하도록 만듬
메소드 : 상속과 무관, 메소드를 재정의할 수 없게 만듬
변수 : 상수화, 때문에 무조건 선언과 동시에 대입해서 선언해야함
try_catch
오류가 나면 프로그램이 종료되지만, 예상되는 오류를 예외처리해 과정을 통해 종료시키지 않도록 하는 기능
프로그램의 전체를 알아야 정확하게 오류의 위치에 구성하기 때문에 적절하게 구성할 필요가 있음
클래스 둘러보기
wrapper : 기본 자료타입을 참조 자료 타입으로 변경할 수 있도록 도와주는 클래스
StringBuffer : String의 불변성 때문에 생기는 과부하를 피하기 위한 가변성을 가진 자료 타입
그 외 Math, String, Arrays, Calendar 등
======== 끝 ========
26일차 수업
generalize
하나의 조건으로 모든 것에 적용한다
클래스나 메소드들을 사용할 때 내부에서 사용하는 데이터 타입을 미리 설정
< > 괄호 안에 데이터 타입을 정의
클래스 형태로 작성해야하고, 기본자료형 타입의 경우 wrapper class를 이용한다
괄호의 위치는 클래스 명 뒤에 작성
Object<String> a = new Obeject<String>();
제너릭에 쓰는 파라미터
클래스 외부에서 선언하는 자료형, 호출할 때 적는 인스턴스의 타입으로 구성해줌
ex)
class Box<E>{---}
public class Main{
public static void main(String[] args){
Box<Apple> abox = new Box<Apple>();
// 제너릭 선언 제너릭 대입
Box<Orange> obox = new Box<Orange>();
abox.set(new Apple());
obox.set(new Orange());
// ClassCastException 과 같은 런타임 에러 위험 요소가 없음, 형변환 과정도 필요하지 않음
}
}
제너릭 매개변수 개수 상관 없음, comma로 구분
매개변수 이름 일반적인 규칙
-
한글자 대문자
-
E : element
-
T : type
-
N : number
-
K : key
-
V : value
대입 연산자“=” 오른쪽 diamond 기호에 들어가는 값은 생략이 가능함
class test<A extends Number, B>{---}
제너릭 매개변수는 클래스나 Number 인터페이스와 같이 부모를 상속받아 제한할 수 있다
제너릭 메소드
ex)
public static <T> Box3<T> makeBox(T o) {
// 반환타입이 Box3<T> 이지만 컴파일러 입장에서는 모르기 때문에 앞쪽에서 한번 더 T가 제너릭임을 선언
return null;
}
Collection framwork
데이터를 저장하는 구조와 데이터를 처리하는 알고리즘 등을 구조화 해서 클래스로 구현한 것
다수의 데이터를 효과적으로 처리하는 표준화된 방법 제공
라이브러리와 차이점
-
라이브러리
-
클래스에 있는 정보를 가져와서 사용
-
프레임 워크
-
권한이 없고, 항상 프레임 워크 안에 있는 클래스에 맡겨야함
-
지정된 변수와 지정된 함수로만 내용을 채워야함
-
제어의 역전(IoC), 흐름을 프레임 워크가 가지고 있고, 우리는 필요한 코드를 전달
-
ArrayList
배열 기반 자료구조
ArrayList<String> arr = new ArrayList<>();
arr.add(“Toy”); // 데이터 집어넣기
arr.size(); // 크기 확인하기
arr.get(); // 데이터 가져오기