第六周 接口与抽象类

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

导航


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){
  }
}


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


相关文章
|
11月前
2022年 一月19号复盘内容二。(继承 多态 接口 抽象(二)
2022年 一月19号复盘内容二。(继承 多态 接口 抽象(二)
22 0
|
9月前
细谈抽象类
抽象类 1.抽象类是被abstract修饰的类 2.抽象类中的抽象方法 3.抽象类中可以有和普通类一样的成员变量和成员方法 4.抽象类不能被实例化 5.那么抽象类不能被实例化要它有何用???
36 0
|
11月前
|
C++
自考学习C++ 继承与派生
自考学习C++ 继承与派生
|
11月前
2022年 一月19号复盘内容二。(继承 多态 接口 抽象(三)
2022年 一月19号复盘内容二。(继承 多态 接口 抽象(三)
24 0
|
11月前
2022年 一月19号复盘内容二。(继承 多态 接口 抽象)(一)
2022年 一月19号复盘内容二。(继承 多态 接口 抽象)(一)
28 0
|
设计模式 消息中间件 Java
【Java设计模式 面向对象设计思想】三 再谈抽象类和接口
【Java设计模式 面向对象设计思想】三 再谈抽象类和接口
130 0
|
设计模式 Java
抽象类随记
当父类的某些方法不能确定时,定义为抽象方法;用abstract修饰 被abstract修饰的方法叫抽象方法,被abstract修饰的类叫抽象类;
40 0
|
Java Maven
你有没有掉进去过这些 抽象类 和 接口 的 “陷阱“
你有没有掉进去过这些 抽象类 和 接口 的 “陷阱“
你有没有掉进去过这些 抽象类 和 接口 的 “陷阱“
|
传感器 Java
抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)(一)
抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)
抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)(一)
|
设计模式 搜索推荐
抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)(二)
抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)
抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)(二)