차례:
비디오: Implementing a SyncAdapter - Developing Android Apps 2024
Java 클래스가 손상되지 않은 경우이를 수정하지 마십시오. 기존 Java 클래스에 기능을 추가하려고한다고 가정합니다. Android의 Activity 클래스를 좋아하지만 미리 선언 된 Activity 클래스는 화면에 아무 것도 표시하지 않습니다. Android의 Activity 클래스를 다시 작성 하시겠습니까? 아니요.
기존 수업을 다시 작성하는 대신 수업을 연장합니다. 안드로이드 "안녕하세요"응용 프로그램이 없어도
public class MyActivity extends Activity
를 작성한 다음 MyActivity 클래스의 선언문에
@Override public void onCreate (번들 savedInstanceState) {super. onCreate (savedInstanceState);
MyActivity 클래스는 대부분의 Android 액티비티 기능을 확장하여 Activity 클래스의 두뇌가 작동하지 않는 onCreate 메소드를 재정 의하여 새로운 기능을 만듭니다.
Java의 최종 클래스
객체 지향 프로그래밍에서 클래스를 확장하는 것은 할 수있는 가장 고상한 일입니다.
하지만 일부 수업은 연장되지 않습니다. 예를 들어 Java의 String 클래스를 예로 들어 보겠습니다. String는 String입니다. 누군가의 MyString을 원하지 않습니다. 길이 메서드를 사용하여 문자열의 문자를 스크램블하는 데 걸리는 시간을 반환합니다. 문자열 메서드를 사용하여 예기치 못한 방식, 비정상적인 방식, 비정상적인 방식으로 작업하는 것을 방지하기 위해 Java 작성자는 String 클래스를 최종적으로 작성했습니다.
public final class String
미리 선언 된 클래스 중 일부는 전화 및 MediaStore 클래스.
최종 클래스가 확장되기를 싫어하는 것처럼
추상 클래스 는 확장을 주장합니다. Android의 ViewGroup은 추상 클래스의 예입니다. public
abstract 클래스 ViewGroup {public void bringChildToFront (자식보기) {int index = indexOfChild (child); if (index> = 0) {removeFromArray (index); addInArray (child, mChildrenCount); 어린이. }} void onLayout (boolean changed, int l, int t, int r, int b);} 안드로이드의 ViewGroup. 자바 파일은 3, 700 라인 이상입니다. 그래서이 예제는 파일 코드의 아주 작은 부분만을 가지고 있습니다. 그러나 클래스가 어떻게 추상화되는지를 알 수 있습니다. 아무도 놀랍지 않게, abstract라는 단어는 class라는 단어 앞에 선다. 그러나 abstract라는 단어는 클래스에 속한 몇 가지 메소드의 선언을 시작합니다. Android의 창립자는 ViewGroup에 대한 아이디어가 유용하다고 결정했습니다. 좋아하는 Android 레이아웃 (LinearLayout, RelativeLayout 등)이 ViewGroup의 하위 클래스이기 때문에 올바른 것입니다.또한 한 종류의 ViewGroup에서 다른 기능으로 변경되는 일부 기능은 이해하지 못했습니다. 예를 들어 위의 예제는 bringChildToFront 메소드를 정의하고 ViewGroup의 서브 클래스는이 메소드를 상속합니다.
하지만 창립자는 특정 그룹의 그룹에서 작업하지 않는 한 ViewGroup의 일부 측면을 이해하지 못한다는 사실도 깨닫게되었습니다. 예를 들어, LinearLayout은 사물을 하나씩 배치하고 RelativeLayout은 위, 아래 및 서로의 측면을 배치합니다. 따라서 위의 코드에는 본격적인 onLayout 메서드가 없습니다.
onLayout 선언에는 메서드 본문이 없습니다. 그러나 Android는 ViewGroup 클래스의 각 하위 클래스가 자체 onLayout 메서드를 선언하도록 요구합니다. Java는 onLayout 메소드를 추상으로 선언 할 때이 요구 사항을 시행합니다.
개발자는 추상 클래스에서 객체를 만들 수 없습니다.
ViewGroup group = new ViewGroup ();이라고 쓰면, Java는 당신이 나쁘게 행동하고 있다고 알려줍니다. ViewGroup 클래스와 함께 유용한 것을하기 위해서는 ViewGroup 클래스의 서브 클래스가 필요하다. 서브 클래스는 ViewGroup 클래스에있는 각 추상 메소드의 구체적인 버전을 가지고있다:
package com. allmycode. 견본; 안드로이드 가져 오기. 함유량. 문맥; 안드로이드 가져 오기. 전망. ViewGroup; public class MyLayout
public void MyLayout
onLayout (boolean changed, int l, int t, int r, int) b);}}