[Java] OCAJP-5

🐷Jinie (juniorDeveloper)·2020년 11월 12일
0

Java

목록 보기
8/12

1.

  • String.trim()을 이용하면 공백을 제거할 수 있다.
  • 단, 변수자체의 공백을 제거하는 것이 아니기 때문에 공백제거 결과를 새로운 String변수에 담아서 이용해야한다.
  • String.equals는 String변수가 같은 값을 가지고있는지 확인한다.
  • String.isEmpty() 는 String변수가 비어있는지 확인한다.

2.

  • abstract class :
    추상클래스는 '미완성된 클래스'이다.
    미완성된 메서드를 가지고있다.
    추상클래스는 객체로 호출될 수 없다.
  • 인터페이스를 implement해도 메서드를 무조건 사용하지 않아도 된다.
  • 반드시 재정의를 해야 이용이 가능하다.
  • 상속을 위한 클래스이기 때문에 따로 객체를 생성할 수 없다.
  • 기존의 클래스에서 공통된 부분을 추상화하여 상속하는 클래스에게 구현을 강제화
  • 메서드의 동작을 구현하는 자식클래스로 책임을 위임
  • 공유의 목적
  • 추상 클래스(abstract class)는 혼자로는 Class의 역할을 다 못하지만,
    새로운 Class를 작성하는 데 있어 그 바탕(Basic Class)가 되는 부모클래스(Super Class)로서 중요한 의미를 갖는다.
  • 즉, 상속받는 클래스에서 만들어둔 메서드를 완성하길 바라는 클래스라고 생각하면 된다.
  • 인터페이스와의 차이점은 무엇일까?
    인터페이스는 '다중상속'이 가능하다.
    추상클래스는 메서드를 대충 그려놓는 미완성설계도 같은 느낌이면 인터페이스는 기본설계도라는 느낌이다.
  • 인터페이스와 추상클래스의 사용의도 차이점
    추상클래스는 IS - A "~이다".
    인터페이스는 HAS - A "~을 할 수 있는".
  • 추상클래스는 예를들어서 '먹다'라는 메서드를 강아지, 사람, 식물 에게 모두 적용하는 것으로 만들고자할때 사용할 수 있다. 강아지, 사람, 식물은 모두 다른 것을 먹기때문에 각각 '먹다'라는 메서드를 다르게 사용해야하기 때문이다.
  • 그러면 추상클래스에서는 '먹다'만 정의를하고
    그이후에 상속받는 클래스에서
    사람은 '밥을 먹다.'
    강아지는 '사료를 먹다.'
    식물은 '햇빛을 먹다.' 로 재정의해서 필요한 메서드로 맞춰 사용할 수 있게 되는 것이다.

2-1. 추상 클래스(abstract class)

  • 미완성 설계도 :
    미완성 메서드(추상 메서드)를 포함하고 있다.
  • 추상 클래스로 인스턴스는 생성할 수 없다.
  • 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스
  • 상속을 통해 구현해준다.
  • 추상클래스에도 생성자가 있고, 멤버변수, 메서드도 가질 수 있다.
  • 상속 : 자손클래스를 만드는데 조상클래스를 사용하는 것.(구체화)
    추상화 : 자손클래스들에서 공통적인 부분을 뽑아 조상클래스를 만드는 것.

2-1-1. 추상 메서드 (abstract method)

  • 메서드는 선언부와 구현부로 구성되어 있는데,
    그 중 선언부만 있고 구현부를 작성하지 않는 것이 추상 메서드이다.
  • 설계만 해 놓고 실제 수행될 내용은 작성하지 않는 미완성 메서드이다.
  • 이런식으로 실행코드를 넣어야할 구현부가 비어있다.
  • 상속받는 클래스 각각의 구현부가 다를 수 있는 점을 생각하여 미완성 상태로 남겨둔 것이다.
  • 그래서 추상클래스를 상속받는 자손 클래스는 조상의 추상 메서드를 상황에 맞게 적절히 구현해 주어야한다.
  • 자손클래스는 추상클래스의 추상 메서드를 모두 오버라이딩(재정의)를 통해 구현해 주어야한다.

2-2. 인터페이스 (interface)

  • 일종의 추상클래스와 같다.
  • 단, 추상화의 정도가 추상클래스보다 높기때문에 상수와 추상메서드만 가질 수 있다.
  • 인터페이스는 인터페이스로부터만 상속받을 수 있다.
  • 다중상속 가능
  • 구현시 implements를 사용한다.
  • implements로 구현하는 클래스에서는 인터페이스의 메서드를 모두 사용해야한다.
    만약 일부만 구현한다면 abstract를 붙여서 추상클래스로 선언한다.
  • 오버라이딩(재정의)를 한 후 사용한다.
  • 인터페이스의 장점
  1. 개발시간을 단축시킬 수 있다.
  2. 표준화가 가능하다.
  3. 서로 관계없는 클래스들에게 관계를 맺어줄 수 있다.
  4. 독립적인 프로그래밍이 가능하다.
profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글