[F-lab 모각코 챌린지 14일차] TIL

JeongheeKim·2023년 6월 14일

TIL

목록 보기
14/66

학습계획


  • 자바의 신 11장 - 자바 API 읽기
  • 자바의 신 11장 연습문제 풀기

Today I Learned


정리해봅시다

API 문서를 자동으로 생성하는 명령어는 무엇인가요?*

  • javadoc, 관련소스에 API doc에 명시할 내용이 정리되어있어야한다.

API의 왼쪽 상단 창에는 어떤 내용이 제공 되나요?*

  • 패키지 목록

API의 왼쪽 하단에는 어떤 내용이 제공 되나요?*

  • 인터페이스 목록
  • 클래스 목록
  • Enum 클래스 목록
  • 예외 클래스 목록
  • 에러 클래스 목록
  • 어노테이션 타입 목록

API 우측화면에는 보통 어떤 내용이 제공되나요?*

  • 좌측에서 선택한 목록의 상세가 나온다.

Deprecated라는 것의 의미는 무엇인가요?*

  • 더이상 사용되지 않는 기능임을 명시. 컴파일 에러가 발생하지는 않지만, 사용하지 않는것을 권장한다.

모든 클래스의 부모인 java.lang.Object클래스

  • 자바에서 한번에 이중상속은 안되지만, 여러단계로 상속은 가능하므로 Object가 가장 부모 클래스에 위치할 수 있다.
  • 왜 모든 클래스에서 Object클래스의 상속을 받을까?
    • Object클래스에서는 클래스가 가져야할 기본적인 행동이 정의되어있어서 상속을 통해 객체의 기본 행동을 상속하기 위해서

Object 클래스에서 제공되는 메소드

  • 객체를 처리하기 위한 메소드
    • protected Object clone()
      • 객체의 복사본을 만들어 리턴한다.
    • public boolean equals(Object obj)
      • 현재 객체와 매개변수 객체가 동일한지 비교한다.
    • protected void finalize()
      • 더이상 객체가 더 이상 쓸모없을때 GC에 의해 메소드가 호출된다.
    • public Class<?> getClass()
      • 현재 객체의 Class클래스의 객체를 리턴한다.
    • public int hashCode()
      • 객체에 대한 해시코드 값을 리턴한다.
    • public String toString()
      • 객체를 문자열로 표현하는 값을 리턴한다.
  • 쓰레드를 위한 메소드
    • 25장에서 다시 확인

Object 클래스에서 가장 많이 사용하는 toString()

  • System.out.println() 메소드에 매개변수로 들어가는 경우
  • 객체에 대해 더하기 연산을 하는 경우
    • String클래스를 제외한 참조 자료형에 대해 + 연산을 할 경우 자동으로 toString() 메소드가 호출된다.
public class ToStringTest {
	public static void main(String[] args) {
		ToStringTest toStringTest = new ToStringTest();
		toStringTest.toStringMethod(toStringTest);
	}

	public void toStringMethod(ToStringTest toStringTest) {
		System.out.println(this);//자기자신 객체에 대한 참조
		System.out.println(toStringTest);
		System.out.println(toStringTest.toString());
		System.out.println("plus "+ toStringTest);
	}
}
  • toString()은 Object에 정의된 채 사용하기 보다는 Overriding해서 사용하는것을 추천한다.
    • toString()은 객체에 대한 정보를 문자열로 표현하는데 Object에 정의된 메소드는 객체들이 가져야하는 기능을 정의한것이고 Object를 상속받는 모든 클래스는 각자 클래스에 맞는 toString()을 재정의해야한다고 생각한다.

  • 상위클래스 추상적, 하위클래스 더 구체적

  • 오버라이딩은 상속에서 하위클래스에서 메소드의 역할을 변경하거나 확장할 필요가 있을때 상속받은 메소드를 새로 정의하는것

  • 상속은 공통된 속성과 행동의 객체들 중 추상화

    • 같은 일반적인 형식에 속하는 여러 클래스에서 공유해야하는 어떤 행동이 있다면 상속을 한다.
    • 하위 클래스는 상위클래스에 있는 모든 public으로 지정한 인스턴스 변수와 메소드 상속하고 private은 안함
    • 상속의 장점
      1. 코드가 중복되는것을 방지
      2. 일련의 클래스를 위한 공통적인 규약이 정의됨
    • 상속은 보통 1~2단계정도로
  • 어떤 메소드를 오버라이드 해야하나?

    특정 하위클래스 유형에만 적용되는 메소드 구현이 필요한 경우

  • A is B, A has B

    어떤것이 다른것을 확장하는지 알고싶을때 A는 B이다 테스트를 한다.

    예) 삼각형은 도형이다.

    고양이는 고양이 과이다.

    욕조는 화장실이다. → 욕조와 화장실사이에 관계가 없는것은 아니지만 상속 관계가 아니다.

    화장실에는 욕조가 들어간다고 할 수 있다.

    a는 b다 가 성립하고 상위가 하위들의 추상화일 경우 상속해야한다.

  • 다형성을 사용하면 레퍼런스 유형을 실제 객체유형의 상위클래스 유형으로 지정할 수 있다.
  • 인자와 리턴 유형에도 다형성을 적용할 수 있다.
  • 다형성을 활용하면 새로운 하위 클래스 형식을 프로그램에 추가하더라도 코드를 변경할 필요가 없다.

slicing

  • string[start:end:step]
  • step은 생략 가능. 기본 1
  • 문자열 앞에서 자르기
    • string[0.len]
    • string[:3]
      • 시작점인 0은 생략 가능
  • 문자열 뒤에서 자르기
    • string[-4:]
def solution(phone_number):
    num = len(phone_number)
    back = phone_number[-4:]
    
    return (num-4) * "*" + back

영문 대소문자 상호 전환

  • swapcase()

  • 다른 풀이 방식

         def solution(my_string):
         answer = ''
    
         for i in my_string:
             if i.isupper():
                 answer +=i.lower()
             else:
                 answer+=i.upper()
         return answer

0개의 댓글