------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
要了解接口,就先要了解抽象类。
抽象类
什么是抽象类,为什么要有抽象类?
当多个类中出现相同功能,但是功能主体不同,可以进行向上抽取,这是只抽取功能定义,而不抽取功能主体。
抽象类的特点:
1. 抽象方法一定在抽象类中
2. 抽象方法和抽象类都必须被abstract关键字修饰
3. 抽象类不可以用new创建对象,因为调用抽象方法没意义。
4. 抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用;如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
抽象类比一般类多了抽象函数,就是在类中可以定义抽象方法。抽象类不可以实例化。
特殊点:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
抽象类的运用:模板方法。
在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么这是就将不确定的部分暴露出去,由该类的子类去完成。提高扩展性,复用性。
- /*
- 需求:获取一段程序运行的时间
- 原理:获取程序开始和结束的时间并相减即可
- */
- abstract class GetTime{
- public final void getTime(){
- long start = System.currentTimeMillis();
- runcode();
- long end = System.currentTimeMillis();
- System.out.println("Millis:" + (end - start));
- }
- public abstract void runcode();;
- }
- class SubTime extends GetTime{
- public void runcode(){
- for(int x = 0; x < 4000; x++){
- System.out.println(x);
- }
- }
- }
接口
初期理解,可以认为是一个特殊的抽象类,但抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
接口是不可以创建对象的,因为有抽象方法。需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是一个抽象类。
格式:interface{}
接口中常见定义:常量,抽象方法
接口中的成员修饰符是固定的:
成员变量:public static final
成员函数:public abstract
记住:接口中的成员都是public的。
接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。
- interface Inter{
- public static final int NUM = 3;
- public abstract void show();
- }
- interface InterA{
- public abstract void show();
- }
- class Test implements Inter,InterA{
- public void show(){
- System.out.println("test" + NUM);
- };
- }
- public class 接口 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Test t = new Test();
- t.show();
- }
- }
接口的特点:
->接口是对外暴露的规则
->接口是程序的功能扩展
->接口可以用来多实现
->类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口
->接口与接口之间可以有继承关系