java 子类 如何 “多继承”(类似) 多个不同的提供属性的父类 ?
概述
问题中的多继承指的是 (一种类与类之间的关系, 不一定是具体语言的实现, java没有实现类的多继承, 实现了接口的多继承)
通过 继承 组合 混入 冗余 等方式
我现在想要 实现混入的方式
混入: A类的 属性 = AA类的属性 + AB类的 属性 + 其他 属性。
a = {...aa, ...ab, o, t }
组合: A类的 属性 = AA类的实例 + AB类的 实例 + 其他 属性。
a = {aa:{ time1 }, ab: {o2, time2}, o, time }
冗余: A类的 属性 = 复制到文件(AA类的属性 + AB类的 属性) + 其他属性。
a = { time1,o2, time2, o, time }
需求
- 父类 CommonA 父类CommonB 存放通用属性
- 接口 IcommonA IcommonA 存放通用属性
- 子类 Son 需要继承两个类/接口的属性
现状
如果采用 interface IcommonA IcommonA ,
Lombok 的 @Data 不起作用, 接口中的属性无法 获得 getter/setter
问题
- 如何 实现 ·多继承· 的效果
- 是不是需要 重写 @Data
回答:
按目前的情况看,你说的不能动的基类有多个实现,为什么在你这就要把多个基类让一个类继承呢。
java不全面开放多继承,我想原因是很多开发者会滥用多继承,导致项目难以维护,其收益是要远小于开放多继承的。
一个好维护的代码,一个类的功能设计本身就要遵循解耦的,滥用多继承很明显会变得非常容易破坏设计结构,后果就是爽了当前的开发者,苦了后来的维护者。
如果真的想要实现,lombok
的代理注解 @Delegate
能够完全实现你的要求
public class DelegationExample { @Delegate(types=Test1.class)
private final Test1 test1 = new Test1();
public static void main(String[] args) {
new DelegationExample().test();
}
}
class Test1 {
public void test() {
System.out.println("test1: test");
}
}
java 写法:
public class DelegationExample { private final Test1 test1 = new Test1();
public DelegationExample() {
}
public static void main(String[] args) {
(new DelegationExample()).test();
}
public void test() {
this.test1.test();
}
}
回答:
我是不知道你有啥需求,能让你违背人家jdk设计类单继承的初衷
回答:
接口里的属性不需要用get、set啊,直接接口名.属性名
就出来了
回答:
虽然但是,接口里的属性 都是 public static final
的,也不能继承吧
以上是 java 子类 如何 “多继承”(类似) 多个不同的提供属性的父类 ? 的全部内容, 来源链接: utcz.com/p/944857.html