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

问题

  1. 如何 实现 ·多继承· 的效果
  2. 是不是需要 重写 @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

回到顶部