接口(interface)与类、抽象类

接口(interface)与类、抽象类

绿林寻猫
2021-12-08 / 0 评论 / 74 阅读 / 正在检测是否收录...

什么是接口?

      接口可以看做特殊的抽象类,即只包含抽象方法和常量的变量。

      用interface修饰

 

接口的定义


    [修饰符] interface 接口名 extends 父接口1, 父接口2……{

        零到多个常量定义……
        零到多个抽象方法定义……
        零到多个内部类、接口、枚举定义……
        零到多个默认方法或类方法定义……
    }

例如:

public interface InterfaceName{

   ......

}

注意:

   1.修饰符只能是public或者省略,如果省略则只能在同包下访问接口

   2.接口的命名和类命名规则一样

   3.接口中的方法全都是抽象方法,没有方法体(默认abstract修饰)

   4.类可以实现多个接口

   5.一个接口可以继承多个接口,接口直接是多继承关系

   6.接口中的成员变量全都是常量,没有构造方法

   7.接口只能继承接口,接口与其具体的实现类之间存在多态性

 

类与接口的继承

一个类只可以继承一个父类,可实现多个接口,一个接口可以继承多个父接口。

接口的使用

接口不能用于创建实例,但可以用于声明引用类型变量。

也可用于进行强制类型转换

实现类必须实现接口的所有方法

 

抽象类 (用abstract修饰的类)

    抽象类只能单继承,而接口(interface)可以多实现
    抽象类继承用extends,而接口用implements
    抽象类可以有构造,接口不能
    抽象类可以有一般的属性,接口中的属性只能是静态常量
    抽象类中可以有抽象方法,也可以有一般的方法,而接口中只能有抽象方法
    抽象类中抽象方法可以被除private以外的修饰符修饰,但是接口中只能是public
 

 

接口与抽象类的区别

共同点:
    接口和抽象类都不能被实例化,它们都位于继承的顶端,用于被其他类实现和继承;
    接口和抽象类都可以包含抽象方法,实现接口或继承提象类的普通子类都必须实现这些抽象方法。
 

不同点:
    1.接口里只能包含抽象方法,静态方法和默认方法,不能为普通方法提供方法实现;抽象类则完全可以包含普通方法。
    2.接口里只能定义静态常量,不能定义普通成员变量;抽象类里则既可以定义普通成员变量,也可以定义静态常量。
    3.接口里不包含构造方法;抽象类里可以包含构造方法,抽象类里的构造方法并不是用于创建对象,而是让其子类调用这些构        造方法来完成属于抽象类的初始化操作。
    4.接口里不能包含初始化块;但抽象类则完全可以包含初始化块。
    5.一个类最多只能有一个直接父类,包括抽象类;但一个类可以直接实现多个接口,通过实现多个接口可以弥补java单继承的不足。
    

类的继承与接口的实现


    接口与接口之间用    extends
    接口与类之间用    implements
    类与类之间用    extends
 

 

 

 

 

 

 

 

 

0

评论 (0)

取消