1. 제네릭 타입이란? - 타입을 파라미터(매개변수)로 가지는 클래스와 인터페이스다. - 선언 시 클래스 또는 인터페이스 이름 뒤에 “ “로 적는다. - 제네릭 타입을 사용하지 않는 경우 : - Object 타입 사용 - > 빈번한 타입(강제형)변환 발생 - > 프로그램 성능 저하 - 제네릭 타입을 사용하는 경우 : - 1 ) 클래스 선언할 때 타입 파라미터 사용하면, - 2 ) 컴파일 시 타입 파라미터가 구체적인 클래스로 변경된다! 2. 제네릭 타입을 사용할 때 주의점 - 제네릭 타입을 “선언할 때”에는 타입 파라미터를 선언하는 것이다. - 그렇기에 파라미터의 이름도 단문 대문자 알파벳 1글자로 선언하는 것이다. - 제네릭 타입을 “사용할 때”에는 타입파라미터에 “참조타입의 이름”..
1. 예외처리코드 ( 다중 catch ) - 예외별로 예외 처리 코드를 다르게 구현한다. - Ex. try { } catch ( ArratIndexOutOfBoundsException e ) { 예외처리 1 } catch ( NumberFormatException e ) { 예외처리 2 } - Catch의 순서는 예외 클래스에서 부모 타입을 아래로 자식 클래스를 위에 작성해야 한다. - Why? 왜냐하면 상위 클래스를 위에 작성하면 밑에 하위 클래스를 작성하지 않아도 예외를 위에서 다 잡아버리기에 특정 예외별로 다른 코드를 작성하려면 자식타입을 먼저 작성해야 한다. 2. 예외처리코드 ( 멀티 catch ) - 자바 7부터는 하나의 catch 블록 내에서 여러 개의 예외처리가 가능하다. - 동일하게 예외처..
1. 인터페이스 - 디폴트 메소드 - 인터페이스만으로는 사용이 불가능하다. - Why? 디폴트 메소드는 인스턴스 메소드로, 구현 객체가 인터페이스에 대입되어야 호출할 수 있기 때문이다. - 모든 구현 객체가 가지고 있는 기본 메소드로 사용되지만, 필요에 따라서 재정의가 가능하다. - 인터페이스의 모든 멤버는 public이다. 2. 다형성 - 하나의 타입에 여러 가지 객체를 대입해 다양한 실행 결과를 얻는 것이다. - 자동 타입 변환 ( Promotion ) : 인터페이스( 부모 ) 변수 = 구현( 자식 )객체 ; - Ex. A a1 = new b ; ( 부모인 A타입의 a라는 변수에 자식객체인 b를 넣은 것이다. ) - 자동형변환은 데이터 유실의 위험성이 없다. - 필드의 다형성 : 다형성은 객체를 부품..
1. 요약 - instanceof : 타입변환을 해야 될 때, 먼저 자식 타입인지 확인 후에 강제형변환을 시킬 때 사용한다. - “ 객체 instanceof 타입 “ 형태로 사용되는데, parent instanceof child라고 하면 parent라는 매개변수가 참조하는 객체가 child인지 조사하는 것이다. - Instanceof를 사용하기 위해서는 부모 / 자식 관계기 형성되어 있어야 한다. 2. 추상 클래스 ( Abstract Class ) - 추상 : 실체들 간에 공통되는 특성을 추출한 것이다. - EX. 새, 강아지, 고양이, 햄스터 - > 동물 ( 추상 ) - 추상클래스 : - 실체 클래스들의 공통되는 필드와 메소드를 정의한 클래스 - 추상 클래스는 실체 클래스의 부모 클래스 역할을 한다. ..
1. Final 클래스와 final 메소드 - 상속할 수 없는 final 클래스 : 자식 클래스를 만들지 못하도록 final 클래스로 생성한다. - 오버 라이딩 불가능한 final 메소드 : 자식클래스가 재정의 할 수 없도록 부모 클래스의 메소드를 final로 생성한다. - Final 키워드의 용도 : - 1 ) final 필드 : 수정이 불가능한 필드 - 2 ) final 클래스 : 부모로 사용이 불가능한 클래스 - 3 ) final 메소드 : 자식이 재정의할 수 없는 메소드 2. Protected 접근제한자 - Protected 접근제한자 = default 접근제한자 + alpha - 같은 패키지 내에서는 default 접근제한자와 같이 허용되지만 - 다른 패키지에서는 default와 다르게 자식 클..
1. 상속( Inheritance )의 개념 - 자식 클래스가 부모 클래스의 멤버를 물려받는 것 - 자식이 부모 클래스를 선택해서 물려받는다. - 상속 대상 : 부모 클래스의 필드와 메소드 ( 생성자는 물려받지 않는다. ) - 자식 클래스 : 부모 클래스의 필드와 메소드 + 자식 클래스에서 추가한 필드와 메소드 - 상속을 통해서 객체의 다향성을 구현할 수 있다. - 상속 대상 제한 : - 1 ) 부모 클래스의 private 접근제한자를 갖는 필드와 메소드는 제외된다. - 2 ) 부모 클래스가 다른 패키지에 있을 경우, default 접근제한자를 갖는 필드와 메소드도 제외된다. - + 자식 클래스일지라도 외부 클래스로 간주되기 때문에 private로 제한된다. 2. 클래스 상속 ( extends ) - E..
1. 요약 - 참조 타입의 종류 : 배열타입, 열거타입, 클래스. 인터페이스, 레코드 - Staic은 지역변수나 매개변수에 사용할 수 없다. - 매개변수는 지역변수로 간주하기에 지역변수와 같은 유효 범위를 갖는다. - 패키지란 비슷한 기능을 가진 클래스끼리 묶은 것을 의미한다. - 만약 다른 패키지에 있는 것을 사용하고 싶을 때는 import문을 사용해야 한다. - import문은 컨트롤 + 쉬프트 + O를 사용하면 자동으로 입력되지만, 만약 같은 이름의 클래스를 모두 사용할 때에는 직접 패키지명.클래스명으로 직접적으로 입력해야 한다. - Default 접근제한자는 접근제한자 중 아무것도 작성하지 않았을 때 자동으로 사용되는 접근제한자로, 같은 패키지에만 접근이 가능하다. (public과 같이 class..
1. 정리 - Top – level package 명은 고정이 되어있는데, 주로 회사 도메인을 반대로 작성하게 된다. ( com.naver ) 2. 패키지 - 클래스를 만들 때, 패키지를 결정한 후에 클래스를 생성하게 된다. - 우리의 도메인 이름 : zerock.org - - - > org.zerock. . - Ex. org.zerock.myapp.domain 식으로 패키지 명을 작성하게 된다. - 패키지 명이 다르면 클래스의 이름이 같아도 충돌이 생기지는 않는디. 3. 패키지 – import 문 - 패키지 내에 같이 포함된 클래스간 클래스 이름으로 사용가능 - 패키지가 다른 클래스를 사용해야 하는 경우 : - 1 ) 패키지 명이 포함된 전체 ..
1. 인스턴스 멤버 선언 VS 정적 멤버 선언의 기준 - 객체마다 가지고 있어야 할 데이터면 인스턴스 필드, 공용적인 데이터는 정적필드로 선언한다. - 인스턴스 필드는 계산기의 색, 정적 필드는 계산기 속에 있는 파이의 값이 해당 된다. - 인스턴스 필드로 작업해야 할 메소드는 인스턴스 메소드, 인스턴스 필드로 작업하지 않는 메소드는 정적 메소드로 선언한다. - 인스턴스 메소드를 불러들여 사용할 때에는 인스턴스 메소드를 사용해야 한다. - 정적 메소드는 더하기나 빼기처럼 자기 스스로 기능이 실행되어야 하기에, 정적 메소드를 사용하는 경우는 적은 편이다. 2. 정적 초기화 블록 [ Static initializer ] - 클래스의 구성 멤버 : - 1) 필드 - 2) 생성자 : 인스턴스 필드의 초기값을 넣..
1. 생성자 - 생성자 오버로딩 : 매개변수의 타입, 개수, 순서가 다른 생성자를 여러 개 선언 - 오버로딩에서 순서를 파악할 때 변수의 이름으로 판단하는 것이 아니라, 타입으로 판단하는 것이다. - 다른 생성자 호출 [ this ( ) ] // Car2.java : 중복코드를 줄이기 위해서 다른 생성자를 호출한다. - Car2(String model){ -this() 문법을 통해, 다른 생성자를 호출하는 것도 가능하다!! this(model,null); // 생성자2 호출 // 모든 생성자를 생성자3 호출하는 것이 아니라 바로 밑의 생성자를 호출하는 것이 좋다. } // 생성자1 - 생성자2 호출 Car2(String model, String color){ this(model, color,0); } /..