728x90

JAVA/Bootcamp 자바 23

Collection Framework API - Wrapped, parseInt, ArrayList, HashSet, Map

자바 컬렉션 프레임 워크 Collection Framework API 란, 자바에서 제공하는 데이터 구조인 컬렉션 collection을 표현하는 인터페이스와 클래스의 모음(API)이다 Wrapper 란, 기본 자료형을 객체로 바꿔준다. 왜 바꿔야할까? 컬렉션 프레임 워크는 객체 자료형을 사용하기 때문에 기본 자료형을 사용할 수 없다. 앞문자만 대문자로 쓰면 된다 int a = 10; //기본 자료형 -> Interger a = 10; Integer a = new Integer(10); // 둘 다 사용 가능, 객체라 new를 사용한다. auto boxing sout(a.intValue()); //unboxing Integer b =10; //auto boxing int bb = b; // auto unb..

내가 만드는 API, 사용자 정의 자료형 배열 , Object Array

BookArray Book -> 내가 만든, 사용자 정의 자료형이다. 사용자 정의 자료형 배열에 데이터를 저장하고 출력해보자 일단 BookDTO 제작 잘만든 DTO 란.. 정보 보호(private 은닉 ), set, get, toString(). 기본 생성자를 오버로딩해 초기화 할 수 있는 생성자를 만든다. public class Book { private String title; private int price; public Book(){} public Book(String title, int price) { this.title = title; this.price = price; } public String getTitle() { return title; } public void setTitle(Str..

내가 만드는 API, int array

배열처럼 동작하는 api만들기, intArray클래스를 만들어 사용해보자 import java.util.Arrays; public class IntArray { private static final int DEFAULT_CAPACITY=5; //초기용량. //final static 을 사용해 변경불가상수로 만듦 //static을 사용해 다른 클래스들의 접근 허용, 지금은 굳이 없어도 됨. private int size =0;//몇개있나 확인, 원소의 개수 확인 private int[] elements; //배열길이 미확정, 만드는건 생서자에서 하것 //정수 데이터 여러개를 가지고 있어야 함 public IntArray(){ //배열의 생성 동작 elements = new int[DEFAULT_CAPACI..

직접 만들어 사용하는 Class, Gson, Json

Utility api 를 만들어 사용해보자 public class MinMaxFinder { private MinMaxFinder(){ //private을 하면 객체 생성을 막을 수 있다. //new 못하고 클래스이름과 도트연산자 } public static int findMin(int[]arr){ int min = arr[0];//초기값 세팅 for(int i=1; i< arr.length; i++){ if( arr[i]< min){//arr[i]값이 min보다 적게 되면 min =arr[i]; //min에 arr에 있는 값을 옮겨줌 } } return min; } public static int findMax(int[]arr){ int max = arr[0];//초기값 세팅 for(int i=1; i..

추상클래스와 인터페이스

추상클래스와 인터페이스 왜 등장했을까? 다형성이 보장되려면 부모가 자식에게 명령하면 무조건 동작해야 한다. 이것을 다형성 보장이라고 한다 다형성을 보장하기 위해선, 전제조건으로 반드시 재정의를 해야한다. 다형성을 보장한다는 것은 무슨 의미일까? 부모가 명령하면 자식은 반드시 동작 (재정의 후 동작) 재정의된 부모의 메서드는 자식으로 가는 통로 역할을 해준다. 즉, 본래 가지고 있던 메시지는 쓸모가 없어진다. 이것을 유지할 필요가 없어진다. 그래서 메서드의 구현부를 없앤다. public abstract class Animal { public abstract void eat();// 추상메서드라고 한다. 불완전 메서드 //:메서드의 구현부가 없다. 자식이 반드시 재정의 //재정의하면 ? 안나옴, 자식을 찾아..

최상위 클래스 Object

Object클래스를 이용해 객체 생성하기. public class A extends Object{ public A(){ super(); } public void display(){ System.out.println("A. "); } public void printGO(){ System.out.println("print go: A. "); } } //생략되어있는 것들을 추가 함. //extends obj, public a super() //결국은 전체가 a의 것. //부모, 자식 뭘로 가리킬건지, 부모는 업캐스팅해야 다 가리킬 수 있다. 디폴트 생성자 메서드 : 클래스 이름과 이름이 같고, 리턴 타입 안되고, super() 가 생략되어 있음. 부모 클래스에도 extends Object 가 생략되어 있다. ..

추상 클래스, 인터페이스

추상 클래스와 인터페이스는 왜 등장했나 부모가 자식에게 명령하면 자식이 무조건 동작해야한다. 이것을 다형성 보장이라고 한다. 다형성을 보장허려면, 재정의를 해야한다 [재정의?오버라이딩? 상속받은 메서드를 하위 클래스가 본인에게 맞게 편집해 사용하는 것. 동적 바인딩, 실행해야 안다. 상속과 관련이 있음 동적? 프로그램이 실행중] 재정의된 부모의 메서드는 자식으로 가는 통로 역할을 해준다. 즉, 본래(부모의) 가지고 있던 메시지는 필요가 없어진다. 그럼 부모는 이 메세지를 유지할 필요가 없어진다. 그래서 부모는 메서드의 구현부를 없앤다. public abstract class Animal { public abstract void eat();// 추상메서드라고 한다. 불완전 메서드 //:메서드의 구현부가 없..

자바 - 다형성

다형성 Polymorphism ? 하나의 메세지가 다양한 형태로 나타난다. 상속을 알아야 다형성을 이해할 수 있다. 유저클래스는 자식의 구조를 모르기 때문에 (직접 접근 어려움) 부모를 통해 사용해야 한다. 이렇게 사용하려면 전제조건이 필요하다. 상속. 부모의 메서드를 자식 클래스가 재정의를해야한다. 이렇게 해 유저클래스가 부모 클래스를 구동해 자식 클래스의 재정의 메서드를 사용할 수 있다 ( 업캐스팅을 통해) 부모가 자식들에게 명령을 해야 다형성이 성립이 된다. 다형성을 사용하면 클래스의 유지보수가 쉬워지고 확장성이 좋아진다.

Downcasting, 객체형변환

부모가 자식을 가리키게 하려면 -> Downcasting 부모는 크고 자식은 작기 때문에 자식이 부모에게 갈 때는 타입변환이 필요 없다 하지만, 부모가 특정 자식에게 갈 때는 자식의 형으로 변환을 해 가야한다. 부모와 자식 상속관계선 부모타입은 자식 모두를 가리킬 수 있다 = upcasting downcasting = 강제 형변환. 부모가 특정 자식으로 가고 싶을 때, 부모 타입이 바로 자식에게 갈 수 없다. 자식 타입으로 변환을 해야한다. 업캐스팅이 되어야 다운캐스팅이 된다 public class ObjectCasting { public static void main(String[] args) { Animal ani =new Dog(); ani.eat(); //dog ani = new Cat(); an..

Override재정의, Upcasting, 동적바인딩

클래스의 행위(동적) 정보에 맞춰 클래스를 설계 (상속) 하는 방법에 대해 알아보자 수평적 구조는 중복 발생, 유지보수의 여러움, 확장성 떨어짐 과 같은 많은 문제가 있다. ->그래서 수직적 구조를 쓴다. 부모가 중복 부분을 만들고, 자식들은 상속 받으면 된다. 부모와 자식을 연결해 부모를 이용, 자식을 동작시킬 수 있는 원리로 클래스를 설계 해야한다. 자식 클래스를 숨기고 바깥쪽에 있는 부모로 자식을 동작 시킬 수 있는 방법 -> 상속 상속 구조를 왜 쓸까? - 코드 중복 최소화, 메서드 재활용 부모 클래스를 통제하면 자식들도 통제된다. 부모에 의해 자식들의 동작 방법이 달라진다. Dog 클래스 사용 시 만든 사람은 동작구조를 알지만 사용하는 사람은 모른다. 왜? 소스코드를 노출시키지 않기 때문 - 다..

728x90
반응형