java面向对象——接口

1.接口特点

接口不是被类继承了,而是被类实现了

①.有时必须从几个类中派生出一个子类,继承他们所有的属性和方法。但是,java不支持多重继承。有了接口,就可以得到多重继承的效果。

②.接口是抽象方法和常量值的定义的集合

③.接口实质上是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义(还必须只有抽象方法),而没有变量和方法的实现

④.接口没有构造方法。

⑤.接口可以继承接口,使用extends关键字

⑥.接口的方法都是抽象方法,系统默认已经默认自动加上了public abstract修饰符,定义抽象方法时可以不加上抽象修饰符。接口的所有属性都是静态的常量,默认省略了static和final(都默认是由public static final隐式修饰的,已经自动加上了修饰符),属性的值必须实例化(初始化)。

2.接口与抽象类

①.如果一个类中,既有抽象方法,又有非抽象方法,那么这个类只能为抽象类,不能定义为接口。

②.如果一个类中,只有抽象方法,没有非抽象方法,那么这个类可以定义为接口

③.接口中的所有方法都是抽象方法,所以可以说接口就是一个特殊的抽象类。

④.接口中除了定义方法外,还可以定义成员变量

⑤.接口没有构造方法,而抽象类中有构造方法。

⑥.抽象类中的方法可以有方法体的实现,而接口中是不能有的(但是jdk8后接口里的某些方法可以有方法体,比如说static方法和default修饰的方法)

⑦. 个类继承了个抽象类,那么它必须全部覆写抽象类中的抽象法,当然也可以不全 部覆写,如果 不覆写全部抽象法则这个类也必须是抽象类。一个类实现接口也同理,要么全部覆写接口中的抽象⽅法,要么这个类是接口。

⑧.接口不能继承抽象类

⑨.接口中的访问权限只有一种public。且定义接口时强烈建议在抽象方法前加上public。因为定义接口未加上public,一个类实现了接口,而这个类里没有使用public修饰时编译会报错

interface A{
    String MSG = "hello";
    void print();
}
class X implements A{
    void print() {
        System.out.println("接口A的抽象方法print()");
    }
}

3.接口的用处

接口常常被用来当做定义常量的集合(接口中的常量,可以省略修饰public static final,抽象通常可以省略public abstract)

4.接口的实现implements,创建接口用interface

Java中一个类无法继承来自多个类,但是可以继承多个接口,是有关键字implements,多个接口之间使用”,”隔开,接口之间没有先后顺序。

继承多个接口的类称为实现类,这个类必须实现所有接口的所有方法

当类实现接口的时候,类要实现接口中所有的方法,不然类必须声明为抽象类,否则就要使用implements关键字实现所有接口。

语法

class 类名 implements 接口名称,接口名称,接口名称……{

//实现方法体

}

一个类只能继承一个类,但是能实现多个接口。

接口能继承另一个接口,用extends关键字继承。

子类除了实现接口外,还可以继承抽象类。若即继承抽象类,同时又实现接口。语法格式

class 子类 extends 父类 implements 接口1,接口2,…{}

5.接口虽然说只能由抽象方法和全局常量组成,但是内部结构不受限制。正如抽象类中可以定义抽象内部类一样,在接口中也可以定义普通内部类、抽象内部类和内部接口。

6.JDK1.8及1.8后的版本的接口

①.接口里的方法允许有方法体

②.接口中可以有static方法和default修饰的方法(default修饰的方法只能出现在接口中),且这两种方法都必须有方法体。static方法直接通过接口名.方法名调用

 ③.父接口的default方法如果在子接口或者子类重写,那么子接口实现对选哪个、子类对象在main函数测试时调用该方法,调用的以重写的方法为准。

④.子类或者子接口如果没有重写父接口的default方法,则在调用default方法时(在main()函数中调用时),调用的是父类定义的default方法

//static方法属于接口里的方法,相当于结构体里的属性,故使用接口名.方法名
Ipay.staticMethod();
//default⽅法必须通过实现类的对象调⽤
Apay apay = new Apay();
apay.defaultMethod();

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值