一、接口

接口是特殊的抽象类,接口通常用interface来声明,一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口是java中的引用数据类型,和类很像,如果抽象类中所有的方法都是抽象方法,这时候就可以用另外一种形式来显示,这种形式就是接口。

 

二、java不能多继承,但能通过接口多实现。接口不是被类继承了,而是要被类实现。

 

三、接口不能被实例化,需要覆盖接口中所有的抽象方法,然后才能用子类来实现实例化,

 

四、eclipse中如何新建一个接口?

打开eclipse---》点击File---》点击new---》点击interface---》给该接口命名---》点击finish即可建立成功。

eclipse是一个开放源代码的、基于java的可扩展开放平台,是java的集成开发环境,也可作为其它语言的集成开发环境。

 

五、接口实现

1、新建一个名为Inter接口如下:

package introduction7;

public interface Inter {
    /*接口中的成员一般有抽象方法和全局常量两种,而且这两种都有固定的修饰符
     * 成员都是由public来修饰,成员常量用public static final来修饰,
     * 方法用public abstract来修饰。
     * 如果不写会默认加上,只要是接口中的方法和变量都固定有这些修饰符。
     */
    
    /*
     * public表示该全局常量权限为公共的
     * static表示该全局产量能够类名直接访问
     * final表示该全局常量是一个固定不变的值
     * (只能是 public abstract,其他修饰符都会报错)
     */
    public static final int NUM = 4;
    public static final String speed = "100";
    
    public abstract void show1();
    public abstract void show2();
    
    public abstract void engineStart(String engineType,boolean isKeyless);
}

2、然后再新建一个名为InterfaceDemo类并实现Inter接口:

刚实现时程序会报错,这是因为我们没有实现接口中的抽象类,

因为我们使用了eclipse  java集成开发环境,所以有两种方式来解决此问题,

第一种,手动重写接口中的所有方法,

第二种,将鼠标指针移动到报错的类名上,然后点击弹出的提示“Add unimplemented methods”上

然后eclipse会自动实现所有抽象方法,

实现后

package introduction7;

//实现接口的关键字为implements
    public class InterfaceDemo implements Inter{

        @Override
        public void show1() {
            // TODO Auto-generated method stub
            System.out.println("这是接口中抽象方法show1的实现。。。");
        }

        @Override
        public void show2() {
            // TODO Auto-generated method stub
            System.out.println("这是接口中抽象方法show2的实现。。。");
        }

        @Override
        public void engineStart(String engineType, boolean isKeyless) {
            // TODO Auto-generated method stub
            System.out.println("这是接口中抽象方法engineStart的实现。。。");
        }
}

3、新建一个InterfaceDemo1类来调用InterfaceDemo类

package introduction7;import java.awt.TexturePaint;

public class InterfaceDemo1 {

    public static void main(String[] args) {
    //首先创建一个实现了Inter接口的InterfaceDemo类
    //格式:接口类型   接口变量名 = 关键字new  实例了该接口的子类
    /*
     * 这样调用体现了java三大特性(封装、继承、多态)之一---》多态,
     * 多态也就是一个事物的多种形态,
     * 例如动物是父类,狗是子类:
     *             动物  x = new 狗();
     * 也可以写成: 狗   x = new 狗();
     * 通过以上实例可知:同样一个狗对象,却具备了两种类型,
     * 小狗表示的是它,动物也表示它。
     * 当面对共性类型时,所以的子类对象都可以接收,说明这样提高了代码的扩展性,
     * 这就是多态的好处。
     * 多态的前提就是首先相互之间要有关系,要么是继承关系,要么是实现关系,
     * 通常要有覆盖,因为抽象方法不覆盖无法使用,
     */
        Inter myInter = new InterfaceDemo();
    //因此也可以写成子类的类型(InterfaceDemo类相当于Inter接口的子类):
    //    InterfaceDemo myInter = new InterfaceDemo();
        
    //调用InterfaceDemo类中的engineStart方法
        myInter.engineStart("6 cy1", true);
    }
}    

打印接果为:

 

六、如何实现多接口?

1、新建一个名为BMWInterface的接口

package introduction7;

public interface BMWInterface {
    
    public void Navigation();
}

2、在已经实现了Inter接口的InterfaceDemo类中继续实现BMWInterface接口,如果实现后类名报错,是因为该类中还没有实现BMWInterface接口中的方法。

 

3、在InterfaceDemo1类中调用该接口

 结果为::

 

七、static关键字

 1、通常来说,调用类时需要通过new关键字来创建并获得此类的对象,new实例化对象时数据存储空间才被分配,类中的方法才能被外界调用,但有两种情况用new无法解决:

  只为某特定域分配单一存储空间,不管创建多少对象。

  希望某个方法不与包含它的类的任何对象实例关联在一起。

2、被static修饰的变量和方法会随着类的加载而加载,优先于对象出现在内存中,不能引用this或super。

3、static关键字不能用于局部变量,只能作用于域。

4、static用法:

  修饰变量

  修饰方法

  静态代码块

  修饰类

5、静态不能调用非静态,非静态可以调用静态和非静态

6、调用static方法时,在不创建任何对象的前提下可以直接调用。

 

八、final关键字

1、用于修饰类、类属性、类方法。

2、被final修饰的类不能被继承,被final关键字修饰的类属性和类方法不能被覆盖,被final修饰的变量只能被赋值一次。

posted on 2018-08-30 10:49  时光以北暮南城  阅读(323)  评论(0编辑  收藏  举报