두 클래스 내 클래스용 동시에 연장해야 한다.
public class Preferences extends AbstractBillingActivity {
public class Preferences extends PreferenceActivity {
How to do 그래서요라니?
Upd *. 이후, 어떻게 그럴 수 없는 것을 사용해야 하는 압스트라치빌링스티비티 와 기본설정에는 그리고는요?
Upd2*. 만약 내가 gnu. 인터페이스를 사용하여, 제가 만들기:
공용 인터페이스입니다 연장시킵니다 압스트라치빌링스티비티 빌리 긴터페이스 프레페렌체이스티비티, {
}
공용 인터페이스입니다 프레페렌체이스티비티 {
}
공용 인터페이스입니다 압스트라치빌링스티비티 {
void 언크리치 (Bundle 사브딘스턴스국가);
}
다음
public class Preferences implements BillingInterface {
또 다른 방법은 pbs. 연장시킵니다 내부 클래스를 만드는 두 번째 클래스. '클래스' 와 '압스트라치악타이온 제미노이트럼 에드그 확장하는':
public class MyClass extends JMenuItem {
private class MyAction extends AbstractAction {
// This class can access everything from its parent...
}
}
(물론 Groovy 와 스칼라) 는 java 1.8 불렀으매 " [인터페이스입니다 수비수 방법] [1] 것, 즉 미리 정의된 인터페이스를 기본 방법 시체들이요 ". 여러 개의 인터페이스를 구현하여 수비수 메서드을 효과적으로 사용하는 방식으로, 2 개의 인터페이스입니다 객체에는 비헤이비어를 확장할 수 있습니다.
또한, 주석, 두 개 이상의 클래스뿐만 비헤이비어를 @Delegate Groovy 를 사용하여 확장할 수 있습니다 (해당 클래스를 컨테인먼트하는 메서드을 때 주의할 사항이 있는 같은 이름의). 이 코드는 입증하고 있다.
class Photo {
int width
int height
}
class Selection {
@Delegate Photo photo
String title
String caption
}
def photo = new Photo(width: 640, height: 480)
def selection = new Selection(title: "Groovy", caption: "Groovy", photo: photo)
assert selection.title == "Groovy"
assert selection.caption == "Groovy"
assert selection.width == 640
assert selection.height == 480
[1]: http://www.javabeat.net/2012/05/virtual-extension-methods-in-java-8/ #
익숙한 의 다중 계층?
수퍼 데이터베이스에구성원을 등 다른 하위 클래스를 사용할 수 있습니다.
이 문제를 해결할 수 있습니다.
public class PreferenceActivity extends AbstractBillingActivity {}
그럼
public class Preferences extends PreferenceActivity {}
이 경우 모두 상속됩니다 기본설정에는 클래스용 프레페렌체사스티비티 및 압스트라치빌링스티비티 잘 알려져 있다.
[게] Groovy 에 사용할 수 있습니다 (http://docs.groovy-lang.org/next/html/documentation/core-traits.html) 대신 구분된다. 비슷한 행동을 그대로 추상 클래스 (flash. 지정할 수 있는 길을 수 있지만 여전히 추상적인 메서드을 구현하십시오 기타), 다음과 같은 뭔가 할 수 있습니다.
"'jave 게 왕루이트라이트 { int 제이드 () { 1000년 기본값입니다 복귀하십시오 / / } 추상 문자열이어야 //Required 제나미 () }
게 쿠스토머트레이트 { 구체화하십시오 제컴파니 () { " 반품하십시오 Internal"; 기본값입니다 // } 추상 구체화하십시오 기타데레스 () }
클래스 인터날쿠스토머 쿠스토머트레이트 왕루이트라이트 구축, { 구체화하십시오 제나미 () {. } 구체화하십시오 기타데레스 () {. } }
데프 인터날쿠스토머 = new 인터날쿠스토머 () 1000년 프린틀린 internalCustomer.id / / 프린틀린 인터날쿠스토머스컴파니 //Internal
"'
그냥 지적하는 것은 있지만, 경우에 따라서는 두 클래스 동일하게 확장할 수 있다 (위 예에서는 등), 손쉽게 해결할 수 있다고 한다. 일반적으로 사용하는 것을 강력하게 제안하세요 설계에 필요한 않는 특징을 분석하는 jumping into 전에 진실이며당신이 won& # 39, 아주 잘 할 수 없는 구현하십시오 상속 (예를 들어, t # 39 의 방법 사용 금지되었는지 can& traits). # 39 의 권고에 따라 수락됨 answer& 가능하면.
내가 도와줄 수 있는 방법을 생각할 수 있는 경우 확장하려는 클래스뿐만 만 포함할 수 있습니다.
이러한 클래스뿐만 쓰기 등 인터페이스입니다. Java 로 구현할 수 있는 방법 및 구현 방법을 임의의 수의 인터페이스와도 기본값으로 인터페이스입니다.
또한 내부 클래스뿐만 대신 사용할 수 있습니다) 으로 2 개 이상의 클래스뿐만 너회의 보다 작은 자연수이다.
예를 들면 다음과 같습니다.
Class Man{
private Phone ownPhone;
private DeviceInfo info;
//sets; gets
}
Class Phone{
private String phoneType;
private Long phoneNumber;
//sets; gets
}
Class DeviceInfo{
String phoneModel;
String cellPhoneOs;
String osVersion;
String phoneRam;
//sets; gets
}
그래서, 여기에 you have a man who 가질 수 있는 일부 전화 번호 및 유형, 또한 해당 휴대전화요 DeviceInfo 색상에는
또한 it& # 39, s 클래스 (class 를 사용할 수 있는 것이 더 deviceinfo 필드로 같은 전화
class Phone {
DeviceInfo info;
String phoneNumber;
Stryng phoneType;
//sets; gets
}