第六周 接口与抽象类

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

导航


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


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


相关文章
|
2月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
2022年 一月19号复盘内容二。(继承 多态 接口 抽象(二)
2022年 一月19号复盘内容二。(继承 多态 接口 抽象(二)
36 0
细谈抽象类
抽象类 1.抽象类是被abstract修饰的类 2.抽象类中的抽象方法 3.抽象类中可以有和普通类一样的成员变量和成员方法 4.抽象类不能被实例化 5.那么抽象类不能被实例化要它有何用???
65 0
2022年 一月19号复盘内容二。(继承 多态 接口 抽象(三)
2022年 一月19号复盘内容二。(继承 多态 接口 抽象(三)
40 0
2022年 一月19号复盘内容二。(继承 多态 接口 抽象)(一)
2022年 一月19号复盘内容二。(继承 多态 接口 抽象)(一)
44 0
|
Java
Java面向对象—抽象类和接口
Java面向对象—抽象类和接口
105 0
|
Java
Java面向对象之抽象类与接口
抽象类的使用原则如下: (1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),默认为public; (2)抽象类也有构造器 (3)抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理; (4)外部抽象类不允许使用static声明,而内部的抽象类运行使用static声明。使用static声明的内部抽象类相当于一个外部抽象类,继承的时候使用“外部类.内部类”的形式表示类名称 (5)有时候由于抽象类中只需要一个特定的系统子类操作,所以可以忽略掉外部子类。这样的设计在系统类库中会比较常见,目的是对用户隐藏不需要知道的子类
93 0
|
传感器 Java
抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)(一)
抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)
抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)(一)
|
设计模式 搜索推荐
抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)(二)
抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)
抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)(二)
|
Java
编写Java程序,使用抽象类和抽象方法构建不同动物的扑食行为,抽象类设计
编写Java程序,使用抽象类和抽象方法构建不同动物的扑食行为,抽象类设计
413 0
编写Java程序,使用抽象类和抽象方法构建不同动物的扑食行为,抽象类设计