1. 시작하게 된 계기 및 다짐 😮
  • 이번 코드스테이츠의 백엔드 엔지니어링 개발자 부트캠프에 참여하게 되면서 현직개발자 분들의 빠른 성장을 위한 조언 중 자신만의 블로그를 이용하여 배운 것 들을 정리하는게 많은 도움이 된다 하여 시작하게 되었다.

    • 그 날 배웠던 것을 길지 않아도 좋으니 정리하며 복습하는 습관 기르기
    • 주말에 다음주에 배울 내용들을 예습
    • 코딩 문제와 java코드들은 꾸준히 학습
  1. 학습 목표 😮
목표결과
Java_OOP 핵심개념과 원리 이해(다형성,추상화)O
다형성을 위한 참조변수의 형변환 이해 및 심화O
추상 클래스와 인터퍼에시를 통한 추상화의 구현 방식 이해 및 사용O
  1. 정리

다형성

# Object 클래스에서는 Object를 매개변수로 받는 메서드에서 Object[] 배열도 매개변수로 받을 수 있음

# 다형성

 - 한 타입의 참조변수를 통해 여러 타입의 객체를 참조
 - 상위 클래스 타입의 참조변수를 통해 하위 클래스의 객체를 참조(상속 관계)
 - 오버라이딩도 일종의 다형성을 이용
 - 코드의 중복을 최소화하고 효율성을 늘리기 위함
 - 상위 클래스 타입으로 하위 클래스를 참조하려면 (다운캐스팅)을 하여야 한다.
 - 선언한 클래스의 멤버들만 사용가능 ( Creature test = new Human()  ==> Human 멤버 사용불가)
   ==> 상위 클래스의 메서드를 오버라이딩 한 경우 하위클래스의 오버라이딩한 메서드로 출력

 ★★ "선언클래스"기준 상속관계만 형 변환 가능 (그보다 하위로는 불가능)
 ★★ 하위 클래스의 타입으로 상위클래스 참조 불가능
 ★★ 타입 캐스팅을 하여도 원래의 타입은 처음 선언 타입으로 고정되어있음
 ★★ Interface나 abstract클래스를 메서드의 매개변수로 정의하고 구체화 시킨 객체의 형변환한 타입으로 인자를 넘겨 줄 수 있음

 ex) class Human extends Creautre {
        Creature human = new Human(); } 

 ex) animal instanceof Object ==>  animal타입이 Object로 형변환 될 수 있는지 확인해주는 검사

 ex) 
      Customer customer = new Customer();
      customer.buyCoffee(new Americano());

      void buyCoffee(Coffee coffee) {
        money = money - coffee.price; // 가진 돈 - 커피 가격
        System.out.println(coffee + "를 구입헀습니다.");
    }
    
    
 ex)  
 	  abstract class Ride{
        int num;
        String name;
        int price = 1000;
	  }

	 class Car extends Ride{
        int upgrade_price = 5;
        Car(int num, String name){
        super.num = num;
        super.name = name;
    }

    void Test(Ride ride){
        System.out.println(ride.price * this.upgrade_price);
    }






추상화


★★추상클래스 인터페이스 차이점 
 - 추상클래스는 IS - A "~이다".
   인터페이스는 HAS - A "~을 할 수 있는".

# 추상화_(abstract)
 - 물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출
 - 추상메서드 : 추상 클래스 내 abstract로 선언되어 있지만 바디가 없어서 확장한 클래스에서 선언 필수
 - 추상클래스를 오버라이딩 해가며 객체를 구체화 시켜감
 - 멤버로는 추상메서드,상수,기본 변수등 포함 가능


# final 키워드
 - final 클래스 : 변경/확장/상속이 불가능한 클래스
 - final 메서드 : 오버라이딩 불가능
 - fianl 변수 : 값 변경이 불가능한 상수
 - 즉, 변경/상속이 불가능한 유일함을 만들어주는 키워드 이다.

# 인터페이스
 - 추상클래스보다 보다 높은 추상성을 가지고 있음
 - 다중 상속이 가능
 ★★ 인터페이스 스스로 인스턴스를 생성할 수 없지만, 인터페이스를 포함한 클래스 객체를 인터페이스로 형변환 할 수 있다.
 ★ 인터페이스는 멤버로 오직 추상메서드와 상수만을 멤버로 가질 수 있다.
 ★ 모든 인터페이스는 내부의 모든 필드가 public static final로 정의된다.(public static final은 생략가능)
 ★ public abstract 메서드 형식(public abstract 생략 가능)


Extra) Hashmap

Hashmap<type,type> map = new Hashmap<>();
 - put()
 - putAll()
 - get()
 - remove()
 - clear()
 - isEmpty()
 - keySet()
 - values()
 - containsKey()
 - containsValue()
 - replace()
 - entrySet();






  1. 피드백 😮
  • Java_OOP의 남은 핵심개념중 다형성과 추상화를 살펴보았다. 다형성의 경우, 객체를 형변환을 통하여 여러 참조타입으로 이를 참조 할수 있게 하는 방법인데, 해당 참조타입의 상위클래스로 형변환을 통하여 코드의 중복을 줄이고 앞서 배운 오버라이딩 오버로딩을 통해 효율적인 프로그래밍을 할 수 있다.

  • 추상화도 마찬가지로, 상속과 비슷하게 객체의 공통적인 부분만을 추출하여 즉, 좀더 객체를 추상화시켜서 공통된 요소들을 모아놓은 클래스로 추상클래스 자체로 객체를 만들 순 없지만 이를 상속하여 객체를 만들어 사용한다. 인터페이스와 달리 해당 멤버에는 필드,메서드,추상메서드,상수등이 포함 될 수 있고 이와 반대로 인터페이스는 오직 추상메서드와 final 상수만을 멤버로 가질 수 있으며 이는 좀더 추상화된 개념이라 볼 수 있다.

  1. 앞으로 해야 될 것 😮
  • 매일 꾸준히 할 것
    • 꾸준히 velog 작성
    • Java 언어 및 Algorithm 공부(Coding-Test)
    • 틈틈히 운동 하기

  • 내일 해야 할 것
    • 오늘까지 배웠던 OOP들에 대한 전체적인 추가 학습 및 문제풀이
    • Collection에 대한 전체적인 훑어보기
profile
Will be great Backend-developer

0개의 댓글