bear_0X0000
2018-01-26 04:43
采纳率: 60%
浏览 5.4k
已采纳

Java 接口中定义抽象方法有什么意义

Runnable类的源码:
public abstract void run();

            这里用不用abstract有什么区别?
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

27条回答 默认 最新

  • 花匠小林 2018-01-26 05:35
    已采纳

    接口方法声明只能是public abstract的,所以不管你在声明的时候加不加abstract,都是可以的。Java 8开始,接口还引入了默认方法,也就是可以给接口的方法提供默认的实现,默认方法应当声明为:public default并实现,public可以省略。

    举个例子:

    public interface Test() {
            // 以下四种声明方式都是合法的接口方法声明
            void test1();
            public void test2();
            abstract void test3();
            public abstract void test4();
    
            // 默认方法可以省略public,但不能省略default,并且需要添加实现
            default void hello() {
                    System.out.println("Hello");
            }
            public default hello(String name) {
                    System.out.println("Hello, "+name);
            }
    }
    
    点赞 评论
  • whb3299065 2018-01-26 04:53

    首先,run方法不实现的话继承这个类还有意义吗,如果定义成abstract的话就会强制你去实现它,如果不实现就会报错。
    然后,你要理解一下什么是面向对象,这里的run方法,本来就是未完成的方法,如果你这里不写abstract的话,就会认为这个方法以及完善看不符合面向对象的思想
    最后,抽象可以告诉你,,,其他地方我已经帮你写好了,你把这些我抽象的地方填好就可以运行了,你不用管其他地方了

    点赞 评论
  • lyter1214 2018-01-26 04:55

    其实没有必要的,接口里面的方法都是必须由实现类去实现的,所有接口中的方法都是public abstract,只是平时习惯上abstract是不写的,public关键字也可以不写,所以写上abstract没有意义

    点赞 评论
  • lydong089 2018-01-26 05:15

    是接口,默认的修饰词就是public abstract ,你写不写都是这个

    点赞 评论
  • what_you_want 2018-01-26 05:20

    接口中的方法不都是abstract,让实现类去实现,不用去纠结的吧

    点赞 评论
  • qq_38146645 2018-01-26 05:26

    默认情况下,接口内的方法都是public abstract,也就是说,如果你不写,他也是public abstract的。

    点赞 评论
  • qq_26631727 2018-01-26 05:30

    规则,没什么的,只是大部分人都认为这么写好,也源于现在没有更好的方法代替。

    点赞 评论
  • qq_23734471 2018-01-26 05:36

    接口内的方法都是public abstract你写不写都是这个

    点赞 评论
  • qq_21146395 2018-01-26 05:51

    java中如果一个类中有被abstract修饰的抽象方法,那么该该类必须是抽象类或者接口。如果其他的类继承了该抽象类那么必须就要实现这个类中的
    所有抽象方法。因此这种写法是为了让开发实现Runnable时强制必须实现其里面的run方法。任务在run中执行。

    点赞 评论
  • qq_21146395 2018-01-26 05:54

    java中定义抽象方法是为了让一些公用的方法或者属性在父类中声明,然后子类可以公用公共属性,对于不同的方法,在子类中可以用不同的实现。这也就是java中的多态。

    点赞 评论
  • 拓宽视野 2018-01-26 05:55

    接口中有抽象方法,证明这个抽象方法时必须实现。

    点赞 评论
  • jasondyoung 2018-01-26 06:08

    这就是接口的思想,你具体的实现代码不管你,但我规定了你的方法签名,我可以预先调用,但具体的实现可以按实际的变动。

    点赞 评论
  • soft-sun 2018-01-26 06:12

    你定义了非抽象方法,它默认也是抽象的方法,实现类必须重写,你只是省略的关键字abstract,实际上接口会自动给你加上的

    点赞 评论
  • wxsw3000 2018-01-26 06:27

    abstract修饰的方法需要强制你去实现。这样有利于保持子类对父类特点的集成,让子类在向上造型的过程中保持其执行子都拥有一致的执行句柄。保证子类在语法约束下无论怎么变化,都能够干此族系能够干的事情。

    点赞 评论
  • qq_28808781 2018-01-26 06:52

    你定义了非抽象方法,它默认也是抽象的方法,实现类必须重写,你只是省略的关键字abstract,实际上接口会自动给你加上的.

    点赞 评论
  • tallmin 2018-01-26 06:52

    可以让子类重新扩展方法的功能,使得程序更具有扩展性

    点赞 评论
  • qq_32108225 2018-01-26 07:02

    java中如果一个类中有被abstract修饰的抽象方法,那么该该类必须是抽象类或者接口。如果其他的类继承了该抽象类那么必须就要实现这个类中的
    所有抽象方法。因此这种写法是为了让开发实现Runnable时强制必须实现其里面的run方法。任务在run中执行。

    点赞 评论
  • qq_31444649 2018-01-26 07:31

    实现程序的多态性,使其各种定义有统一接口!

    点赞 评论
  • kiki2015 2018-01-26 07:35

    接口就是一种规范,实现类必须实现这种规范,进行开发。方法内部的业务可以不同,但是返回值和参数必须相同。

    点赞 评论
  • weixin_41568886 2018-01-26 08:14

    有的话,实现类必须重写,没有的话,这个接口就没有意义了。

    点赞 评论
  • Hsb_Lucky 2018-01-26 08:42

    主要用于多态,定义一个接口就比如你买了一个主机机箱,但是后面里面的配件随意你怎么搭配,符合规范就行!

    点赞 评论
  • AinUser 2018-01-27 02:50

    对于这个你只需要搜索一下接口和抽象方法的区别即可

    点赞 评论
  • chuangke158 2018-01-27 08:37

    抽象方法是多态的特征之一,实现代码重用等等

    点赞 评论
  • Data_Designer 2018-01-27 13:58

    abstract就是用来使函数定义和类定义与实现分离,要不在一个文件中显得冗余。其子类必须实现其父类所有方法,,否则依旧为抽象类。要注意与接口的区别

    点赞 评论
  • yanglu166166 2018-01-28 04:32

    在接口中默认方法都是抽象的(abstract),不管是否使用public abstract,都一样,可以省略不写。

    点赞 评论
  • 熊华贵 2018-01-30 10:50

    一般用于接口定义回掉。子类继承它。很好用

    点赞 评论
  • RichBrian 2018-05-22 02:43

    其实没有必要纠结这个,接口里面方法都是抽象的。之所以写public abstract void run();可能是给初学者看的,能够知道该方法需要被重写(好吧,这是自己瞎猜的,哈哈)

    点赞 评论

相关推荐 更多相似问题