【java程序设计期末复习】chapter6 接口和实现

接口与实现

接口

为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口。

使用关键字interface来定义一个接口。接口的定义和类的定义很相似,分为接口的声明和接口体。

接口通过使用关键字interface来声明

java 复制代码
interface Printable 
{
           ...
}

理解的关键点是

复制代码
(1)接口可以抽象出重要的行为标准,该行为标准用抽象方法来表示。
(2)可以把实现接口的类的对象的引用赋值给接口变量,该接口变量可以调用被该类实现的接口方法,即体现该类根据接口里的行为标准给出的具体行为。

接口的变量和方法的构成规则

(1)接口中的常量自动都是public、static,final,

(2)接口中的方法默认为public abstract;接口也产生class文件。

(3)接口中的方法不能被static和final修饰,因为类要重写所有接口中的方法。

(4)接口中没有构造函数,方法可以抛出异常。

实现接口

(1)类实现接口

类需要在类声明中使用关键字implements声明该类实现一个或多个接口。如果实现多个接口,用逗号隔开接口名。

(2)重写接口中的方法

类实现了某个接口,那么这个类就自然拥有了接口中的常量,default方法(去掉了default关键字),该类也可以重写接口中的default方法(注意,重写时需要去掉default关键字)。如果一个非abstract类实现了某个接口,那么这个类必须重写该接口的所有abstract方法,即去掉abstract修饰给出方法体。

接口回调

接口回调是指:可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类重写的接口方法。实际上,当接口变量调用被类重写的接口方法时,就是通知相应的对象调用这个方法

java 复制代码
interface  ShowMessage {
   void 显示商标(String s);
   default void outPutStart(){
      System.out.println("********");
   }
}
class TV implements ShowMessage {
   public void 显示商标(String s) {
       System.out.println("tvtvtvtv");
       System.out.println(s);
       System.out.println("tvtvtvtv");
   }
}
class PC implements ShowMessage {
   public void 显示商标(String s) { 
       System.out.println("pcpcpcpc");
       System.out.println(s);
       System.out.println("pcpcpcpc");
   }
}
public class Example6_2 {
   public static void main(String args[]) {
       ShowMessage sm;                  //声明接口变量
       sm=new TV();                     //接口变量中存放对象的引用
       sm.显示商标("长城牌电视机");      //接口回调。
       sm=new PC();                     //接口变量中存放对象的引用
       sm.outPutStart();
       sm.显示商标("华为个人电脑");    //接口回调
       sm.outPutStart();
   } 
}

abstract类和接口的区别

接口和abstract类的比较如下:

复制代码
1.abstract类和接口都可以有abstract方法。
2.接口中只可以有常量,不能有变量;而abstract类中即可以有常量也可以有变量。
3.abstract类中也可以有非abstract方法,接口不可以。
相关推荐
低头专研1 小时前
Markdown标题序号处理工具——用 C 语言实现
c语言·开发语言·typora·markdown文件标题编号·md文件标题序号
刚入门的大一新生3 小时前
C++初阶-C++入门基础
开发语言·c++
你是理想3 小时前
wait 和notify ,notifyAll,sleep
java·开发语言·jvm
helloworld工程师3 小时前
【微服务】SpringBoot整合LangChain4j 操作AI大模型实战详解
java·eclipse·tomcat·maven
Java&Develop3 小时前
idea里面不能运行 node 命令 cmd 里面可以运行咋回事啊
java·ide·intellij-idea
forestsea3 小时前
Python进阶编程总结
开发语言·python·notepad++
q567315233 小时前
使用Java的HttpClient实现文件下载器
java·开发语言·爬虫·scrapy
你们补药再卷啦4 小时前
不用额外下载jar包,idea快速查看使用的组件源码
java·ide·intellij-idea
六bring个六4 小时前
QT上位机笔记
开发语言·笔记·qt
步木木4 小时前
Qt 5.14.2入门(一)写个Hello Qt!程序
开发语言·qt