7. 21

바르고·2023년 7월 21일
0

abstract class
interface
generic

abstract


추상 클래스, abstract class
  - 상속(extends) 관계 정의를 통한 클래스 정의
    -- 현재 위치, 연료
      - 전기차
      - 디젤차

자식에서 전부 @Override 하더라도. 비용면에서 부모에 한 번 선언하는 게 낫다.
=> 굳이 구현하려고 하지말고 선언부만 남긴다. 구현부는 ;으로 대체.
  - 구현부가 없다는 의미로 abstract 키워드를 메서드 선언부에 추가.
  - 객체를 생성할 수 없다 클래스라는 의미로 클래스 선언부에 abstract 추가.
  
abstract class Vehicle {
	private int curX, curY;
    
    public void reportPosition(){
    	//현재위치
    }
    
    public abstract void addFuel(); // abstract..!
}

  - abstract 클래스는 상속 전용의 클래스
    - 자식은 abstract method를 재정의할 책임
    - 객체 생성 불가, 클래스에 구현부가 없는 메서드가 있으므로
    - 하지만 상위 클래스 타입으로 자식을 참조는 가능.
      - Vehicle v = new ElectricCar();

  -abstract를 사용하는 게 좋은가?
    - 구현의 강제를 통해 프로그램의 안정성 향상.
    - interface에 있는 메서드 중 구현할 수 있는 메서드를 구현해 개발 편의 제공.

interface

인터페이스, interface
  - 서로 다른 두 시스템, 장치, 소프트웨어 따위를 서로 이어 주는 부분. 또는 그런 장치

GUI, Graphic User Interface
  - 프로그램과 사용자 사이의 접점
  
인터페이스 작성
  - 최고 수준의 추상화 단계 : 일반 메서드는 모두 abstract
    - JDK 8에서 default method와 static method 추가
  - 헝태
    - 클래스와 유사하게 interface 선언
    - 멤버 구성
      - 모든 멤버변수는 public static final 이며 생략 가능
      - 모든 메서드는 public abstract 이며 생략 가능

인터페이스 상속
  - 클래스와 마찬가지로 extends로 상속
  - 다른점은 다중 상속이 가능
    - 헷갈릿 메서드 구현 자체가 없다.

보통 -able로 이름작성. ~하는 기능 중심

인터페이스 구현과 객체 참조
  - 다형성은 조상 클래스 뿐 아니라 조상 인터페이스에도 적용
  - interface와의 관계도 is a 관계이지만 좀 더 세부적으로 is able to라고도 한다.
    - ~~할 수 있는 기능을 가지게 되는 관계 able!
    
인터페이스의 필요성
  - 구현의 강제로 표준화 처리
    - abstract 메서드 사용
  - 인터페이스를 통한 간접적인 클래스 사용으로 손쉬운 모듈 교체 지원
  - 서로 상속의 관계가 없는 클래스들에게 인터페이스를 통한 관계 부여로 다형성 확장
  - 모듈 간 독립적 프로그래밍 가능 => 개발 기간 단축
  
인터페이스 쓰는 이유
  -퇴근을 빨리해야해서. 

default method
  - 인터페이스에 선언 된 구현부가 있는 일반 메서드
    - 메서드 선언부에 default modifier 추가 후 메서드 구현부 작성
      - 접근제한자는 public으로 한정됨(생략 가능)
  - 필요성
    - 기존에 interface 기반으로 동작하는 라이브러리의 interface에 추가해야 하는 기능이 발생
    - abstract 메서드는 모든 구현체들이 추가되는 메서드를 override 해야 함
    - default 메서드는 abstract가 아니므로 반드시 구현 해야 할 필요는 없어짐
  
  - default method의 충돌
    - mothod 우선 순위
      - super class의 method 우선 ( class > interface )
      - interface간의 충돌 : sub class는 반드시 override해서 충돌 방지.


Generics

다양한 타입의 객체를 다루는 메서드. 컬렉션 클래스에서 컴파일 시에 타입 체크.
  - 미리 사용할 타입을 명시해서 형 변환을 하지 않아도 되게 함.
    - 객체의 타입에 대한 안전성 향상 및 형 변환의 번거로움 감소.

List<int> ... 알잖아.










InteliJ 단축키

alt + insert => 자동생성옵션들 getter, setter ...
ctl + alt + v => 타입 자동 앞에 붙여줌.

//public 붙이는 이유 찾아보기

Calendar


과목평가 키워드.
  1. 데이터 타입과 형변환, 연산자
  2. 기본문장 switch, while, continue, break..
  3. 클래스 설계
    - 생성자
    - toString, equals, hashcode
  4. 객체생성 : this, super
  5. 다형성 : Overloading, Overrding
  6. 배열, 초기화
  7. 자바 기본 API, String, Object
  8. abstract class, interface
  9. Modifier
  

Do it 자바 코딩테스트 책, 유튜브.
바킹독...
profile
바르고의 다락방

1개의 댓글

comment-user-thumbnail
2023년 7월 21일

소중한 정보 잘 봤습니다!

답글 달기