博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA抽象方法,接口
阅读量:5250 次
发布时间:2019-06-14

本文共 1483 字,大约阅读时间需要 4 分钟。

抽象方法(例如:画方法)

  1. 抽象方法必须用abstract void修饰
  2. 抽象方法没有方法体(方法体就是方法的实现)
  3. 抽象方法和空方法体的方法不是同意概念。

    a)  public abstract void Test();为抽象方法,没有方法体;

    b)  public void Test(){};为普通方法,有方法体但为空,因此这个方法不能用

抽象类(例如:图形类)

  1. 定义:使用了关键词abstract声明的类叫作“抽象类”
  2. 抽象类可以包含的成员:

    a) 属性

    b) 方法(普通方法,构造方法,抽象方法)

    c) 初始化块

    d) 内部类

    e) 枚举类

  3. 抽象类的说明:

    a) 抽象类不可以被实例化(即使有构造方法)

    b) 抽象类的构造方法不能用于实例化,主要用于子类的调用

    c) 抽象类的子类可以是(不实现抽象的抽象方法的)抽象类,也可以是实现了抽象类中所有抽象方法的普通类

接口

  1. 定义:在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来生命
  2. 接口可以包含的成员:

    a) 静态常量

    b) 抽象方法

  3. 接口的说明:

    a) 接口中的所有方法必须是抽象方法

    b) 接口中没有构造方法

    c) 接口不能用于实例化对象

    d) 接口和类之间的关系是实现,接口与接口之间的关系是继承

    e) 接口可以继承多个接口

    f) 接口的实现类可以是(不实现接口的抽象方法的)抽象类,也可以是实现了接口中所有抽象方法的普通类

    g) 接口并不是类,编写接口的方式和类很相似,但是他们属于不同的概念,接口是一个抽象类型,类类型、接口类型、数组类型都是引用类型,它们是同级关系

抽象类和接口比较

同:

  都不能被实例化

  都属于引用类型

异:

  抽象类可以有实例变量,接口只能有静态常量

  接口只能有抽象方法,抽象类可以有抽象方法也可以有普通方法

  向下:抽象类只能继承一个,接口可以实现多个

  向上:抽象类只能有一个父类(单一继承),接口可以有多个父接口(多重继承)

接口的实现

  1. 定义:类使用implements关键字实现接口

  2. 格式:[修饰符] class 类名 implements 接口名[其它接口,其它接口,…]{      }

  3. 关于接口实现的说明:

    实现是相对于接口来说的,只有接口有实现

接口为什么可以多继承

  在接口中不能有实例变量,只能有静态的常量,不能有具体的方法(包含方法体),只能有抽象方法,因此也就摒弃了多继承的缺点

  对于第一个缺点(父类实例变量重名时调用出错):因为接口只有静态的常量,但是由于静态变量是在编译期决定调用关系的,即使存在一定的冲突也会在编译时提示出错;而引用静态变量一般直接使用类名或接口名,从而避免产生歧义

  对于第二个缺点(父类方法名重名时调用出错):一个类实现多个接口,因为接口只有抽象方法,具体方法只能由实现接口的类实现,在调用的时候始终只会调用实现类的方法(不存在歧义)

多继承的缺点

  1. 如果在一个子类继承的多个父类中拥有相同名字的实例变量,子类在引用该变量时将产生歧义
  2. 如果在一个子类继承的多个父类中拥有相同方法,子类中有没有覆盖该方法,那么调用该方法时将产生歧义,无法判断应该调用哪个父类的方法

转载于:https://www.cnblogs.com/fangzuchang/p/5911182.html

你可能感兴趣的文章
shell脚本编程笔记
查看>>
【转】df与du下的磁盘空间不一致 df du 统计磁盘空间不一致的解决方法
查看>>
Linux下jsp环境搭建(Nginx+jdk+mysql+tomcat)
查看>>
上拉电阻和下拉电阻
查看>>
理解 Node.js 的 Event loop
查看>>
【第五周作业】寸步难行
查看>>
C语言--循环队列实现
查看>>
cmd for 用法
查看>>
onbeforepaste
查看>>
JVM学习笔记三_异常初步
查看>>
寻找引用控件的方法
查看>>
python3 python2 import 的区别
查看>>
vivado2016.1下载程序出错:End of startup status: LOW
查看>>
browserify学习总结
查看>>
Linux查看当前目录下文件夹和文件的大小
查看>>
决策树:为什么分类后信息熵减少了。(信息熵的定义,信息增益)
查看>>
angularjs 路由的应用
查看>>
css 固定在窗口底端
查看>>
linux shell 之尝试编写 企业级 启动脚本
查看>>
Mongodb 相关链接
查看>>