类为两个不在java中使用继承的类创建公共方法
我只是想知道是否有任何方法可以创建两个不相关但具有相同方法实现的类。我知道有接口和静态方法,但它们似乎只有在类中有静态字段时才有用。当方法使用特定于精确对象的字段时,这是否可能做到这一点? 我知道写这样的代码是一种糟糕的做法,但我只是好奇
编辑: 我的意思是这样的:
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创建公共基类,接口不起作用。我试图避免两次编写同一个实现并复制代码
# 1 楼答案
。。。或者可以在Java 8+中使用默认实现
当然,你的人和猫实现了
MakingOlder
# 2 楼答案
您的接口可能无法工作,因为您试图在接口中实现一个方法:
为了使其工作,请尝试添加
default
关键字,使其看起来像:然后,实现该接口的类只需要包含以下内容:
要测试结果,可以调用以下命令:
# 3 楼答案
当然,这被称为“组合+委派”,用以下方式取代继承通常是一种好的做法:
https://en.wikipedia.org/wiki/Composition_over_inheritance