第六周 接口与抽象类

简介: 第六周 接口与抽象类

导航


1.接口语法与注意事项

2.接口支持多重继承

3.类调用接口的语法

4.接口也是一种类,也可以产生对象,接口的多态性

5.适配器类

6.抽象类定义与用法


——————————————————————————————————————


1.接口语法与注意事项

接口的语法:


[abstract] interface 接口名 {
  [public][abstract] 返回类型   
  方法名(参1,参2) 
}


注意:


1.没有方法体,static方法也不能用,默认是public 和 abstract

2.接口中无成员变量,无构造器,不能用接口创建对象

3.接口中的所有方法都是抽像方法,默认也是abstract


2.接口支持多重继承


[abstract] interface 接口名 extends 接口1,接口2{
}


3.类调用接口的语法


class 类名 implements 接口1,接口2{
}


注意点:


1.类中必须实现接口中的所有方法,否则就会有编译错误

2.继承后方法的访问修饰符必须强于父类中的方法修饰符,并且继承类必须使用public修饰


例子:


//接口
interface IBiz{  
  void change();
  boolean withdraw(double amount);
}
//父类
class ClsA{
}
//插入接口实现,不影响父类
class clsB extends ClsA implements IBiz{ 
  public void change(){
  }
  public boolean withdraw(double amount){
  }
}



例子来看,类调用接口时必须将接口中功能都实现

若想选取部分功能实现,就要使用抽象类 往下看把


应当有契约性与稳定性


4.接口也是一种类,也可以产生对象,接口的多态性

但是只能使用自己接口中的方法,其他父类与接口方法隐藏


举例:(能够产生对象)


class clsA implements IBiz,IDao{
}
IBiz obiz = new clsA(); //只能调用自己接口的方法


举例:接口的多态性


接口
interface IBiz{
  void charge();
}
class ClsA implements IBiz{
  public void change(){
  对应实现的方法
  }
}
class ClsB implements IBiz{
  public void change(){
        对应实现的方法
  }
}
class ClsCall{
  static public void call(IBiz biz){   //传的是接口的参数
    biz.charge();  //biz只能使用自己接口中的功能
  }
}


改变不同的实现,不影响ClsCall

接着进行调用上面的


IBiz obiz = new ClsA();
ClsCall.call(obiz);


charge调用结果根据AB两个都不同


5.适配器类

方法作用:


1.实现接口,并对接口中的接口方法提供空实现

2.空实现就是有方法体,但方法体中不提供有效的代码


举例子:


接口
interface IBiz{
  void charge();
  boolean withdraw(double amount)
}
适配器
class BizAdapter implements IBiz{
  public void charge(){}
  public boolean withdraw(double amount){
      return false;
  }
}
class Bizlmpl extends BizAdapter{
  public void charge(){
    实现
  }
}


使用适配器有什么好处呢?

创建一个类并且继承这个继承器,就可以使用其中的方法了,可以随意调用几个方法。


6.抽象类定义与用法

介于接口与类之间的概念


1.使用abstract修饰,并且其中的方法也要使用abstract修饰

2.可以有构造器,但是不能在new后使用抽象类构造器,也就是说抽象类不能创建对象


最主要就是使用抽象类调用接口时,就不需要实现所有接口的方法


举例子:


接口
interface IBiz{
  void charge();
  boolean withdraw(double amount);
}
抽象类
abstract class ClsA implements IBiz{
  public boolean withdraw(double amount){
  }
}


抽象方法与其他成员方法与变量有关联,使用抽象类否则使用接口


相关文章
|
人工智能 关系型数据库 分布式数据库
沉浸式学习PostgreSQL|PolarDB 16: 植入通义千问大模型+文本向量化模型, 让数据库具备AI能力
本文将带领大家来体验一下如何将“千问大模型+文本向量化模型”植入到PG|PolarDB中, 让数据库具备AI能力.
26103 21
沉浸式学习PostgreSQL|PolarDB 16: 植入通义千问大模型+文本向量化模型, 让数据库具备AI能力
|
存储 C++
c++字符和不常见常量
c++字符和不常见常量
160 0
|
自然语言处理 Java 编译器
为什么要看 Python 源码?它的结构长什么样子?
为什么要看 Python 源码?它的结构长什么样子?
253 2
|
Docker 容器
docker: 修改运行容器的端口
docker: 修改运行容器的端口
|
算法 安全 数据库
【第三章】软件设计师 之 数据库系统
由于提供的内容不包含文章的正文或具体信息,无法生成摘要。请提供文章的详细内容或正文部分,以便我能够根据文章的实际内容提供一个准确的摘要。
【第三章】软件设计师 之 数据库系统
|
C语言 C++
C语言—每日选择题—Day54
C语言—每日选择题—Day54
|
Java API Apache
POI简介,以及使用POI技术实现Excel文件的导入导出案例
POI简介,以及使用POI技术实现Excel文件的导入导出案例
552 0
POI简介,以及使用POI技术实现Excel文件的导入导出案例
|
安全 机器人 Linux
7年,从“游戏少年”到大厂技术总监的逆袭之路
一直没有正式的介绍过自己,一方面粉丝太少,另一方面确实没有时间写。算一算在杭州已经有11个年头了。算是一个彻头彻尾的杭漂,现在已经在杭州安家立业。希望大家看过我的经历...
325 0
|
Linux Windows Python
Powershell(3)
Powershell 可以使用powershell管理的服务 share point, exchange, lync, windows azure, window server, system center, vmware, sql server, visual studio, 硬件 .
1177 0