Review

KOSTA 교육 11일차(Interface, Object Class, Nested Class, String API, BoxingUnboxing)

Tigger 2020. 6. 21. 16:53

18.11.12(월)

 

배운 내용

 

  1. Interface(인터페이스)
  2. Object Class
  3. Nested Class(inner, anonymous)
  4. String API

1. Interface(인터페이스)

인터페이스는?

추상메소드와 흡사한 기능을 가지고 있으며 자식메소드를 구현하는데 사용된다. implements를 사용하여 생성한다.

인터페이스를 사용하는 이유

  • 코드의 독립성을 위하여
  • 코드의 일관성을 위하여

 

인터페이스와 추상메소드와의 차이점

  • 추상클래스는 일반 메소드와 추상메소드를 둘다 가질 수 있지만, 인터페이스는 추상메소드와 상수만 가질 수 있다.
  • 인터페이스 내에 존재하는 메소드는 public abstract로 선언한다. (abstract를 생략해도 무방하다.)
  • 인터페이스 내에 존재하는 변수는 무조건 public static final로 선언한다.
  • 인터페이스는 다중 상속과 비슷한 기능을 제공한다.

 

  • interface 클래스를 개설하여 String insertBoard메소드를 선언한다.

 

  • Oracle 클래스를 생성할 때 interface 클래스를 implements로 인터페이스한다.
  • 인터페이스 메소드를 통하여 Oracle을 리턴해준다.

 

  • Oracle과 동일한 방법으로 선언해준다.

 

  • name메소드를 선언하여 program을 파라미터값으로 선언하고 인터페이스 메소드를 선언한다.

 

  • Main메소드에서 인터페이스 클래스를 제외하고 객체를 생성해준다.
  • Manager 객체의 name 메소드를 통해 각 프로그램을 실행한다.

2. Object Class(오브젝트 클래스)

오브젝트 클래스는?

모든 클래스의 조상이며 암시적으로 모든 클래스가 상속을 받고있다.

 

오브젝트 클래스의 종류

 

equals(Object obj)
동일한 클래스에서 생성된 두 객체를 비교한다.

 

  • AccountMain에서 선언한 obj 객체에 대하여 boolean을 사용하여 오버라이드를 선언한다.
  • accountNum이 같으면 참, 다르면 거짓을 선언한다.

 

  • Main메소드에서 각 객체별 생성자 파라미터 값에 대해 선언한다.
  • 그 값이 같다면 “같다", 아니면 “다르다"를 출력한다.
  • 여기서 오버라이딩을 하지 않는다면 주소값을 비교하게 되니 주의한다.

 

toString()
문자화시키는 것을 말한다.

 

  • 변수와 생성자를 생성한다.
  • 여기서 toString을 오버라이딩 하여 문자화 시켜준다.

 

  • toString이 없다면 주소값이 출력이 되겠지만 toString을 통하여 문자화하였기 때문에 2000년 12월 2일이 출력이된다.

3. Nested Class

네스티드 클래스는?

클래스 안의 클래스라는 의미이다.

  • 소스의 가독성을 높이고, 유지보수를 용이하게 하기 위함

 

Inner Class(내부클래스)

 

  • OuterOfStatic이라는 클래스 안에 StaticNested클래스가 추가로 있는 것을 볼 수 있다.
  • 해당 클래스를 컴파일 하면 내부의 클래스도 동일하게 실행이 된다.

 

Anonymous Class(익명클래스)

 

  • Role이라는 추상클래스를를 Main에서 바로 객체로 생성한다.
  • 해당 추상메소드를 선언한다.
  • Person클래스를 객체로 생성하여 파라미터 값에 r을 선언하고 출력한다.
  • “공부 열심히 하는 학생" 이 출력된다.

3. String API

String API는?

String에 해당되는 자바의 기능을 말한다.

  • String에 관련된 API를 사용함으로서 보다 편리하고 쉽게 작업이 가능함

 

  • 문자열 선언은 String name = “”; , String name = new String(“”); 로 한다.
  • String 불변성은 자신은 메소드를 통하여 변하지 않는 것을 말하며 concat을 사용한다.
  • 불변성을 해결하기 위해 문자열을 조건문과 함께 사용한다.
  • StringBuffer, StringBuilder를 사용하여 변한다.
  • 해당 문자열의 위치를 파악하기 위해 indexOf(“”); 를 사용한다.
  • 문자열의 길이는 length를 사용한다.
  • 문자열 부분 추출은 substring(,)으로 실사용이 잦으니 꼭 기억하자.
  • 공백문자 제거는 trim()을 사용한다.
  • 문자를 배열로 전환하는 것은 split()을 사용한다.
  • 정수형을 문자열로 바꾸는 방법은 정수의 변수값을 문자열로 실행하여 바꾼다.

오늘 교육 간 느낀 점

오늘로서 드디어 자바의 객체지향이 끝이났다. 절차지향에서는 처음 접하는 문법과 적응으로 고생했다면 객체지향에서는 자바에 대한 어려움과 복잡함 때문에 고생했다. 오늘 인터페이스를 해보면서 기존에 배웠던 추상메소드와 매우 헷갈렸다. 실제 예제를 통해서 학습을 하였지만 강사님의 지도나 동기들의 지도가 없으면 사실상 혼자서 파악하여 풀이하기엔 좀 벅차기도 했다.


새로 배우는 API같은 경우엔 또 새로운 느낌이라 조금 설레기도 하고 걱정되기도 한다. 가장 자주 쓰이는 String을 시작으로 자료구조 등 많은 것들을 또 1주일 학습할텐데 꾸준한 복습과 성장으로 자바를 온전히 다 배웠을 때엔 발전된 내 모습을 봤으면 좋겠다.