黑马程序员——接口interface

本文深入探讨Java抽象类的概念及特点,包括抽象方法、不能实例化等特性,并通过模板方法展示抽象类的应用。同时,文章阐述接口的概念,介绍接口与抽象类的区别,以及接口在多继承中的应用方式。通过具体代码示例,详细解释如何实现接口和抽象类的多实现,增强代码的复用性和扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

要了解接口,就先要了解抽象类。

抽象类

什么是抽象类,为什么要有抽象类?

当多个类中出现相同功能,但是功能主体不同,可以进行向上抽取,这是只抽取功能定义,而不抽取功能主体。

抽象类的特点:

1. 抽象方法一定在抽象类中

2. 抽象方法和抽象类都必须被abstract关键字修饰

3. 抽象类不可以用new创建对象,因为调用抽象方法没意义。

4. 抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用;如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。


抽象类比一般类多了抽象函数,就是在类中可以定义抽象方法。抽象类不可以实例化。

特殊点:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。


抽象类的运用:模板方法。

在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么这是就将不确定的部分暴露出去,由该类的子类去完成。提高扩展性,复用性

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /* 
  2. 需求:获取一段程序运行的时间 
  3. 原理:获取程序开始和结束的时间并相减即可 
  4.  */  
  5. abstract class GetTime{  
  6.     public final void getTime(){  
  7.         long start = System.currentTimeMillis();  
  8.           
  9.         runcode();  
  10.           
  11.         long end = System.currentTimeMillis();  
  12.           
  13.         System.out.println("Millis:" + (end - start));  
  14.     }  
  15.       
  16.     public abstract void runcode();;  
  17. }  
  18.   
  19. class SubTime extends GetTime{  
  20.     public void runcode(){  
  21.         for(int x = 0; x < 4000; x++){  
  22.             System.out.println(x);  
  23.         }  
  24.     }  
  25. }  


接口

初期理解,可以认为是一个特殊的抽象类,但抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。

接口是不可以创建对象的,因为有抽象方法。需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是一个抽象类。


格式:interface{}

接口中常见定义:常量,抽象方法

接口中的成员修饰符是固定的

成员变量:public static final

成员函数:public abstract

记住:接口中的成员都是public的。


接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. interface Inter{  
  2.     public static final int NUM = 3;  
  3.     public abstract void show();  
  4. }  
  5.   
  6. interface InterA{  
  7.     public abstract void show();  
  8. }  
  9.   
  10. class Test implements Inter,InterA{  
  11.     public void show(){  
  12.         System.out.println("test" + NUM);  
  13.     };  
  14. }  
  15.   
  16. public class 接口 {  
  17.   
  18.     public static void main(String[] args) {  
  19.         // TODO Auto-generated method stub  
  20.         Test t = new Test();  
  21.         t.show();  
  22.     }  
  23.   
  24. }  

接口的特点:

->接口是对外暴露的规则

->接口是程序的功能扩展

->接口可以用来多实现

->类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口

->接口与接口之间可以有继承关系



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值