YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Korean subtitles

← 행동 상속

Get Embed Code
13 Languages

Showing Revision 10 created 10/15/2015 by Dong Kyeong Park.

  1. 잠시 Just Java 앱으로 돌아가보죠
  2. MainActivity 클래스
    displayMessage 메소드를 봅시다
  3. 여기서 조금씩 더 이해되기 시작해요
  4. 우리는 이미 orderSummary
    텍스트 뷰라는 변수를 만들었어요
  5. 이 변수의 데이터 종류는
    텍스트 뷰입니다
  6. 우리는 아직 이 부분을
    이해하지 못했어요
  7. 다음 줄에서, 이 텍스트 뷰
    개체에서 메소드를 호출해요
  8. 우리는 여기 위에서 선언한
    것과 같은 변수 이름을 사용해요
  9. orderSummaryTextView.setText를
    호출합니다
  10. 그리고 메소드의 입력값으로
    문자열을 넘깁니다
  11. 이 문자열 메시지는 원래
    메시지 메소드를 표시하는
  12. 입력 파라미터로 왔어요
  13. 이제 우리가 이해하지 못한
    코드의 이 부분을 파헤쳐봅시다
  14. findViewByld는 메소드
    호출처럼 보이네요
  15. 입력 선언 처럼 보이는 것을 가진
    이 괄호 뒤에 따라오기 때문이죠
  16. 하지만 이상하게도, 이 메소드는
    이 클래스의 어디에서도 정의되지 않았죠
  17. 이 이름을 더블클릭하고
    cmd+F를 누르거나
  18. 윈도우에서 ctrl+F를 누르면
    이 파일에서 검색할 수 있어요
  19. findViewByld 나타난
    두 경우가 보이네요
  20. 그들은 비슷한 방법으로 쓰였고요
  21. 하지만 findVIewByld라는
    메소드를 보이지 않아요
  22. 앞서 MainActivity 클래스에
    있었던 것으로 얘기하자면
  23. setContentView 호출을 봤죠
    하지만 이걸 파일에서 찾으면
  24. 이 또한 MainActivity에
    정의되지 않았어요
  25. 그럼 이 메소드들은 어디서 정의될까요?
  26. MainActivity는 사실
    꽤 짧은 파일입니다
  27. 90줄밖에 되지 않죠
  28. 하지만 클래스에는
    눈에 보이는 것 이상이 있죠
  29. 코드는 AppCompatActivity를
    상속하라고 말합니다
  30. 이것은 MainActivity가
    AppCompatActivity의
  31. 기능의 상속이라는 뜻입니다
  32. 당신의 컴퓨터에 ActionBarActivity가
    있어도 괜찮아요
  33. 이것의 더 오래된 버전이거든요
  34. 당신이 사용해야 할 최신 버전은
    AppCompatActivity입니다
  35. AppCompatActivity는
    더 오래된 Android 기기에서
  36. 이전 호환성 지원을 해줍니다
  37. AppCompatActivity는
    Android 지원 라이브러리의 일부죠
  38. 이는 우리가 오래된
    Android기기를 사용할 때도
  39. Android의 최신 UI 기능을
    사용하게 해줍니다
  40. AppCompatActivity 클래스를
    상속함으로써
  41. 우리는 여기
    MainActivity 안에서
  42. 모든 기능, 모든 상태,
    모든 메소드를 무료로 얻어요
  43. 우리는 여기서 코드를
    복사하거나 붙여넣을 필요가 없죠
  44. 그저 그 클래스를 상속하기만 하면 되죠
  45. 관심이 있다면
  46. AppCompatActivity의
    정보를 구글에서 찾을 수 있어요
  47. AppCompatActivity 클래스에
    대한 참고 문서가 여기 있어요
  48. 전 Chrome 확장을 설치했으므로
  49. 소스를 볼 수 있습니다
  50. 이것은 AppCompatActivity
    클래스가 정의된 코드입니다
  51. 여기 기능이 많은 걸 볼 수 있지만
  52. 중요한 것은 이것이 작동하는
    방법을 이해하지 않아도 된다는 거죠
  53. 당신이 해야 할 일은 App
    CompatActivity를 상속할 때
  54. 무료로 이 기능을 모두 얻는 겁니다
  55. 높은 단계에서 이것을
    이렇게 가시화할 수 있어요
  56. 이것은 MainActivity의
    클래스 정의입니다
  57. 여기 정의된 메소드가 좀 있다고 해요
  58. AppCompatActivity를 상속하면
    우리는 상태에 접근할 수 있고
  59. AppCompatActivity의
    메소드에도 접근할 수 있죠
  60. 그들은 물리적으로 메인 액티비티
    클래스에 추가되지 않았지만
  61. 그들이 여기 있는 걸 상상할 수 있어요
  62. 여전히 그 상태와 메소드를
    참조할 수 있기 때문이죠
  63. 우리 코드는 그렇게
    setContentView나
  64. findViewByld를 참조합니다
  65. 우리가 그 메소드를 물려받았기에
    MainActivity에 그걸 정의하지 않아요
  66. MainActivity는 기기
    화면에 보이지만
  67. 우리는 그걸 물려 받았기 때문에
    메인 액티비티 안에 그 코드를 쓰지 않죠
  68. 직접적으로 클래스 내
    AppCompatActivity의
  69. 상태나 메소드를 갖고 있지 않지만
    그들은 여기 있고 참조할 수 있어요
  70. 무언가 물려받는 것에는
    좋은 점과 나쁜 점이 있어요
  71. 가끔 우리는 행동을 물려받지만
  72. 다른 때엔 그걸 약간
    수정하고 싶을 거예요
  73. 물려받은 클래스의 행동을
    바꾸고 싶다면
  74. 특정 메소드를 오버라이드해야 합니다
  75. 당신이 AppCompatActivity의
    이 메소드 버전을 원하지 않는다는 걸
  76. 컴퓨터가 알 수 있도록 @override를
    메소드의 상단에 추가할 수 있어요
  77. 하지만, 여기 정의한 메소드
    버전을 원한다면요
  78. 그건 까다로운 주제이고
    연습이 많이 필요해요
  79. 하지만 우리는
    AppCompatActivity 클래스의
  80. 메소드 오버라이딩의 예를 봤어요
  81. 그 메소드는 onCreate입니다
  82. onCreate 메소드를
    메인 액티비티에서 오버라이딩하면
  83. 메소드르 호출했을 때 발생하는 것을
    위한 실행을 특정지을 수 있습니다
  84. 이걸 바로 이해하지 못해도 걱정마세요
  85. 객체 지향 프로그래밍
    개념 더미의 간략한 요약을
  86. 드리려고 했을 뿐입니다
  87. 당연히 아직 여러분에게
    떠다니는 질문이 있을 겁니다
  88. 그걸 완전히 이해하려면
    아직 이 주제에 대해서
  89. 더 읽어야 합니다
  90. MainActivity와
    AppCompatActivity 클래스의
  91. 관계를 가시화하는 방법은
    클래스 계층 다이어그램을 그리는 거예요
  92. 이건 뷰 계층 다이어그램과 달라요
  93. 뷰 계층 다이어그램은 화면에
    보여지는 뷰 나무를 보여주니까요
  94. 클래스 계층 다이어그램은
    다른 Java 클래스들 간의
  95. 관계를 보여줍니다
  96. 슈퍼클래스로
    AppCompatActivity가 있죠
  97. MainActivity는 AppCompat
    Activity로부터 상속받으므로
  98. 이건 서브클래스입니다
  99. 이 클래스 정의를 언제 보든
    어떤 것이 슈퍼클래스로
  100. 정의되어 있든 간에요
  101. 이건 서브클래스입니다
  102. DetailActivity라는
    다른 액티비티를 만들고
  103. AppCompatActivity를 상속하면
    이것이 서브클래스가 되고
  104. 이것은 슈퍼클래스입니다
  105. Java 클래스 상속의 다른 예가 있어요
  106. 이것에 대해 생각하면,
    텍스트 뷰, 이미지 뷰, 버튼 뷰는
  107. 모두 그들에게 공통적인 면을 갖고 있죠
  108. 이 모든 뷰들은 화면에서
    너비와 높이를 가집니다
  109. 아직 배우지 않았지만
    그들은 가시 상태를 가집니다
  110. 그들은 보이거나 안 보이게 될 수 있죠
  111. 다른 속성들도 있는데요,
    그것도 그들 사이에서 공통됩니다
  112. 텍스트 뷰 클래스 안에서
    이 속성을 위해 코드를 쓰는 대신
  113. 이미지 뷰 전체로 이걸 복사하고
    버튼 클래스에도 그렇게 해요
  114. 우린 좀 더 똑똑한 걸 해요
  115. 우린 뷰 클래스를 만들 수 있죠
  116. 이 뷰들에서 공통 속성을 추출해서
  117. 그걸 이 뷰 클래스 안에 넣으면,
    코드는 한 번만 쓰이면 됩니다
  118. 그럼 텍스트 뷰 클래스와
    뷰 클래스 사이의 연결은
  119. 어떻게 만들까요?
  120. 상속을 생각한다면, 맞습니다
  121. TextView Java 파일에서
    텍스트 뷰 클래스를 정의합니다
  122. 그렇게 뷰 클래스로부터
    이 모든 데이터와 메소드를 상속합니다
  123. 그럼 TextView 클래스 안에
    많은 코드를 갖지 않아도 되죠
  124. 기능의 일부가 이미
    뷰 클래스 안에 쓰였기 때문이죠
  125. 이미지 뷰와 버튼 클래스에도
    같은 방법이 적용됩니다
  126. 많은 코드를 사용하지 않아도 되죠
  127. 이 파일들에서, 우린 단지
    View 클래스와 비교해서
  128. ImageView의 다른 점을
    쓰면 됩니다
  129. 이건 델타를 특정짓는 것이고
    ImageView 클래스는
  130. View 클래스와 비교해서 Image
    View의 다른 점만 특정지으면 됩니다
  131. View 클래스로부터 특정 행동을
    상속하지 않고 싶다면
  132. 우린 그저 ImageView 클래스나
    다른 클래스에서 업데이트 된 행동을
  133. 특정지으면 됩니다
  134. 이 경우, 용어를 상기시키자면
  135. TextView는 서브클래스이고
    View는 슈퍼클래스입니다
  136. TextView 클래스에 대한
    문서로 돌아가보면
  137. 이제 이 부분을 이해해요
  138. TextView가
    View를 상속한다고 하죠
  139. 이제 이것이 View 클래스로부터
    상태와 메소드를 상속하는 것을
  140. 의미한다는 것을 압니다
  141. 여기 아래엔 클래스
    계층 다이어그램이 있네요
  142. TextView 클래스가
    View 클래스로부터 상속받습니다
  143. 다음으로 뷰 클래스는
    Object 클래스로부터 상속받고요
  144. 탐색해보면 다른
    클래스도 찾을 수 있어요
  145. TextView 클래스로부터
    상속하는 EditText 같은 거요
  146. 이는 TextView 클래스의
    행동을 받고
  147. 이에 더 특정한 기능을 추가해요
  148. EditText는
    TextView로부터 상속받죠
  149. TextView는 View로부터,
    View는 Object로부터요
  150. 이건 클래스 계층 다이어그램입니다
  151. 할게 더 많고
    몇 시간 동안 이걸 볼 수 있어요
  152. TextView 문서 페이지에서
    한 가지를 보여드리죠
  153. setVisibility 메소드를
    보여드리고 싶어요
  154. TextView 클래스 안의 Java
    setVisibility 메소드예요
  155. 이건 뷰가 보일지 안 보일지를 정해요
  156. 이 메소드를 클릭하면
    이 View 클래스로 데려다줍니다
  157. 이 메소드가 무엇을 하는지 서술했죠
  158. TextView 개체가 setVisibility
    메소드를 가지는 게 보이죠
  159. 하지만 이는 사실 View 클래스에서
    상속받았습니다
  160. View 클래스로부터
    이 기능을 무료로 얻었죠
  161. 좋아요, 새 개념을 많이 다뤘죠
  162. 보통 이건 컴퓨터 과학 코스의
    한 학기에 퍼져있습니다
  163. 우리는 이제 연습을 조금 해볼텐데
  164. 이것이 당신을 위한
    선을 연결해주길 바라요
  165. 하지만 이 개념들을
    완전히 습득할 때까지
  166. 더 많은 시간과 연습이 필요합니다
  167. 네, 첫 연습으로, 다른
    새 Android 앱을 만드세요
  168. Just Java 앱을
    망치고 싶지 않으니까요
  169. 프로젝트를 만들어서 앱을 실행하세요
  170. 앱을 만들면 MainActivity
    파일을 보게 될 겁니다
  171. MainActivity 파일은 App
    CompatActivity로부터 상속합니다
  172. 당신의 Android Studio 버전에서
    MainActivity가
  173. ActionBarActivity로부터
    상속해도 괜찮습니다
  174. 그건 AppCompatActivity의
    이전 버전이거든요
  175. 이 메소드 오버라이드를 삭제하여
    onCreate 메소드가
  176. AppCompatActivity 클래스에
    나타나는 방식으로 돌아갈 겁니다
  177. 이 메소드의 존재는 우리가
    onCreate를 위해
  178. MainActivity의 다른 행동을
    원한다고 말해줍니다
  179. 이걸 삭제하면 우리는
    AppCompatActivity 클래스의
  180. 기존 행동을 다시 얻게 되죠
  181. 앱을 실행할 때
  182. 처음 실행한 앱과 비교해
    어떤 다른 점을 발견했나요?
  183. 이 텍스트 박스에 답을 쓰세요