三、08【Java面向对象】之Java接口

今天的博客主题

       Java面向对象 ——》Java接口


接口

接口是一个特殊的抽象类。

它是一系列方法的声明,是一些方法特征的集合。

这些方法没有具体的实现,因此这些方法可以在不同地方被不同类实现不同的行为。

比抽象类更进一步的抽象了类。

 

接口的特点

1)接口只能有常量(默认修饰符 public static final )

2)接口只能有抽象方法(默认修饰符public abstract)

3)接口没有构造函数,不能被实例化

4)接口不能被类继承,只能被类实现

5)接口之间可以像类一样进行继承

6)...

 

接口的语法

接口通过 interface 关键字来声明

public interface 接口名{ ... }

代码示例

// 定义一个人类接口
public interface Person {
    void work();
}
// 学生类 实现 人类接口。 实现自己的行为
public class Student implements Person {
    public void work() {
        System.out.println("学生的工作是学习");
    }
}
// 老师类,警察类,等等都来实现人类接口完不同的工作

接口更像是一个规范,就是让实现了这个接口的类看起来都是这样的。

 

注意:

1)类实现接口,要实现接口里的全部方法,否则那这个类就只能是抽象类

2)类在实现接口的方法时,不能抛出强制性异常,只能在接口中或者继承接口的抽象类中抛出该强制性异常。

3)类在重写接口方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。

4)如果实现接口的类是抽象类,那么就没必要实现该接口的方法。

 

接口继承

接口之间的继承和类的继承一样,单唯一不同的是类不支持多继承,接口支持多继承。

接口继承也是使用 extends 关键字来完成的。

public interface A { ... }
public interface B extends A { ... }

多继承,只需要在 extends 关键字后面增加要继承的接口,接口之间用逗号隔开。

 

标记接口

标记接口就是没有任何方法和属性的接口。

仅表明了他的类属于一个特地帮的类型,供其他代码来测试允许做一些事情。

标记接口的作用就是给某个对象标识一下,使对象拥有某个或某些特权。

比如 Serializable 接口,就是一个标识接口,只是用来告诉JVM,实现这个接口的类需要序列化处理,而不需要实现这个接口的方法。

 

生活中的接口

电脑的USB接口,就是一个很好的栗子。

接口用来统一一个规范,想要接入我这个接口,就得按照我这接口规范来。

接入进来的东西,每个又有自己的一套行为规范。

 

实现类

实现类和普通的类没什么区别类。

这个实现类就是对接口来说的,一个正常类实现了某个接口,那这个类就被称为接口的实现类。

通过 implements关键字来完成。

如果没有这个实现类,那接口也就没什么用了。

 

类 抽象类 接口 三者的区别

1)接口中所有的方法隐含都是抽象的,而抽象类则可以同时包含抽象和非抽象的方法。

2)类可以实现很多个接口,但是只能继承一个抽象类。

3)类可以不实现抽象类和接口声明的所有方法,在这种情况下,类也必须得声明成是抽象的。

4)抽象类可以在不提供接口方法实现的情况下实现接口。

5)接口中声明的变量默认都是final的,抽象类可以包含非final变量。

5)接口中的成员函数默认都是public的,抽象类中的成员函数可以是private,protected或public

6)接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是如果它包含main方法的话是可以被调用的。

7)抽象类中可以有普通方法,接口中不能。

8)抽象类可以有构造函数,接口没有。

9)抽象类中可以有普通变量,接口没有。

10)抽象类不能实现多继承,接口可以多继承。

11)符合is-a关系的选用抽象类,符合has-a关系的选用接口。


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值