Java的abstract和interface的区别

本文详细介绍了Java接口的概念,包括接口中的全局常量、抽象方法、静态方法和默认方法。强调了接口间的继承、实现类的实例化规则以及默认方法的冲突处理。同时,也探讨了抽象类的特点,指出抽象方法的定义以及抽象类的使用限制。
摘要由CSDN通过智能技术生成

interface(接口)是抽象方法和常量值定义的集合:

①JDK7及以前:只能定义全局常量和抽象方法

  • 全局常量:默认是由public static final修饰的,且必须给其初值;实现类中不能重新定义,不能改变其值。
  • 抽象方法:默认是由public abstract修饰的。

② JDK8增加

  • 静态方法:使用 static 关键字修饰。只能通过接口直接调用静态方法;
  • 默认方法:默认方法使用 default 关键字修饰。可以通过实现类对象来调用,可以被实现类重写。

③ 注意事项

  • 接口与接口之间可以继承,而且可以多继承;
  • 接口不可以实例化,如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以实例化;
  • 如果实现类没有覆盖接口中所有的抽象方法,则此实现类应该定义为一个抽象类;
  • 实现类的方法中调用接口中的默认方法; 格式: 接口名 . super . 默认方法名();
  • 如果实现类实现了多个接口,而这多个接口中定义了同名同参数的默认方法,那么该实现类必须重写该默认方法,否则报错-->接口冲突。
  • 如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的默认方法,子类没有重写时,默认调用的是父类中的同名同参数的方法。
  • instanceof 运算符可以用来决定某对象的类是否实现了某个接口;

abstract关键字来修饰一个类,这个类叫做抽象类

Java允许类设计者指定:超类声明一个方法但不提供实现,该方法的实现由子类提供。这样的方法称为抽象方法。有一个或更多抽象方法的类称为抽象类。

①注意事项

  • 抽象方法:只有方法的声明,没有方法的实现。以分号结束;
            比如:public abstract void test();(含有抽象方法的类必须被声明为抽象类)
  • 抽象类不能被实例化。但是可以有构造方法;
  • 抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。若没有重写全部的抽象方法,子类仍为抽象类。
  • 不能用abstract修饰变量、代码块、构造器;
  • 不能用abstract修饰私有方法、静态方法、final的方法、final的类。
  • 抽象类可以实现(implements)接口 ,抽象类可继承具体类也可以继承抽象类;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值