又想多态,又想静态的问题

开拓者Amadues 2021-04-12 10:26:18
多态是为了更上层抽象,便于扩展,静态是为了调用方便,但Java里静态方法一般是不能多态的。
我是这么做的,定义抽象类和抽象方法(多态),实例化的时候,把这个对象赋给该抽象类的一个静态属性(同类型),比如说叫current
然后在这个抽象类里定义静态方法,使用这个静态属性current,就相当于采用静态调用的方式,调用了一个实例对象的方法。
这样做有什么缺点么?
代码类似下下面这样的

public abstract class Database {
public static Database current;

public abstract void create2(); //抽象方法,可以多态

public static void create() {
current.create2();
}
}


调用的话直接Database.create()就可以了,不过这样使用只能是那种一般只需要一个实例的工具类。
...全文
136 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
maradona1984 2021-04-13
  • 打赏
  • 举报
回复
你这是闲着蛋疼,就算想做也没抓住主要矛盾,类方法和对象方法其实就是对象不要new,你只要解决了获取对象的问题,那调用方法的问题完全不是问题,弄个静态方法获取对象都比你这个靠谱
RockeyCui 2021-04-13
  • 打赏
  • 举报
回复
你都已经实例化了,为什么还要静态调用,直接调用方法不就行了么。。。。
实例化那步逃不过啊

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧