关于抽象类与接口 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zxc1234
V2EX    程序员

关于抽象类与接口

  •  
  •   zxc1234 2020-06-14 17:16:08 +08:00 2582 次点击
    这是一个创建于 1946 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的理解是:

    抽象类是 is-a,接口是 has a,java 可以多继承,但是只能实现一个接口

    一般在项目中如果多个类都有用到共同的方法( A ),并且不同类这个方法( A )的实现不同,我会抽象出一个抽象类

    然后多个子类继承它,子类各自重写这个方法的逻辑(好像这边也可以用接口实现???)

    当这些子类有共同的方法实现( B ),只能用抽象类,因为接口不能有方法实现。

    但是 java8 支持接口方法实现,那么是不是除了类可以多继承,接口只能实现一个这个区别外

    接口可以完全代替抽象类了?

    谢谢~

    第 1 条附言    2020-06-15 07:55:11 +08:00
    单继承多实现,,,,,说错
    11 条回复    2020-06-15 10:09:29 +08:00
    mreasonyang
        1
    mreasonyang  
       2020-06-14 17:24:33 +08:00 via iPhone
    并不能完全替代抽象类啊,比如接口里搞定不了非静态属性,访问控制也没有。而且 default 方法的出现个人觉得更多的考虑是对接口功能的扩展而不是用来替代抽象类的。
    zhazi
        2
    zhazi  
       2020-06-14 17:30:43 +08:00 via Android
    可以多继承吗?只能实现一个接口吗?
    zsdroid
        3
    zsdroid  
       2020-06-14 17:44:54 +08:00
    多继承单实现??我学了个假的 java 。
    Uchiha0bito
        4
    Uchiha0bito  
       2020-06-14 17:45:04 +08:00
    意义上还是有区别 一个强调继承 一个强调拓展功能
    DoodleSit
        5
    DoodleSit  
       2020-06-14 17:59:49 +08:00
    我学的是个假 java 。。。
    namelosw
        6
    namelosw  
       2020-06-14 18:01:46 +08:00 via iPhone
    用了 Scala 你就知道,这俩没区别. Scala 的 trait 该有的功能全有,就差个 constructor 今年 Scala 3 会加上.

    看起来有区别是因为 Java 实现的功能太少. 尝试跟你解释继承组合有区别的人都是基于 Java 实现,多大鞋多大脚自动脑补的...

    除了 Scala 像常见的 Python 也很少区分. 继承组合都可以用多继承流畅表达.
    guangdao
        7
    guangdao  
       2020-06-14 18:29:54 +08:00
    多继承单实现...兄弟学的怕不是 avaj 吧((
    hippieZhou
        8
    hippieZhou  
       2020-06-14 18:55:54 +08:00
    你可以这样理解:抽象类再抽象也是类,所以它规定了继承它的实例是什么,但接口是对行为的抽象,规定了继承它的实例能干什么;所以抽象类描述是什么,接口描述能干什么,:)
    zxc1234
        9
    zxc1234  
    OP
       2020-06-15 07:55:47 +08:00
    @zhazi
    @guangdao
    @zsdroid
    @DoodleSit

    我错了,单继承多实现
    jinzhongyuan
        10
    jinzhongyuan  
       2020-06-15 09:41:28 +08:00
    这个问题 得 从 功能 和 语义 俩方面 来想
    Jafee
        11
    Jafee  
       2020-06-15 10:09:29 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1030 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 18:06 PVG 02:06 LAX 11:06 JFK 14:06
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86