gpt4 book ai didi

java - 为两个不在java中使用继承的类创建通用方法

转载 作者:行者123 更新时间:2023-11-29 08:25:29 24 4
gpt4 key购买 nike

我只是想知道是否有任何方法可以创建两个不相关但具有相同方法实现的类。我知道有接口(interface)和静态方法,但似乎只有当你在类里面有静态字段时它们才好。当方法使用特定于特定对象的字段时,是否可以做那种事情?我知道像这样编写代码是一种不好的做法,但我只是好奇。

编辑:我的意思是这样的:

public class Person implements MakingOlder {
private int age;
}

public class Cat implements MakingOlder {
private int age;
}

public interface MakingOlder {
public static void makeOlder() {
this.age += 2;
}
}

我不想为 Person 和 Cat 创建公共(public)基类,并且接口(interface)不起作用。我试图避免两次编写相同的实现并复制代码。

最佳答案

当然,它被称为“组合 + 委托(delegate)”,用这个代替继承通常是一个很好的做法:

https://en.wikipedia.org/wiki/Composition_over_inheritance

public class Person implements AgingObject {
private int age;
private AgingBehavior agingBehavior;

void makeOlder() {
agingBehavior.makeOlder(this);
}
//(...)
}

public class Cat implements AgingObject {
private int age;
private AgingBehavior agingBehavior;

void makeOlder() {
agingBehavior.makeOlder(this);
}
//(...)
}

public class AgingBehavior {
void makeOlder(AgingObject agingObject) {
agingObject.setAge(agingObject.getAge() + 2);
}
}

public interface AgingObject {
int getAge();
void setAge(int age);
}

关于java - 为两个不在java中使用继承的类创建通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53574980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com