面向对象(3)之接口

1:接口概述

    * 从狭义的角度讲就是指java中的interface

    * 从广义的角度讲对外提供规则的都是接口 

* B:接口特点

  * a:接口用关键字interface表示

             * interface 接口名 {}

  * b:类实现接口用implements表示

            * class 类名 implements 接口名 {}

  * c:接口不能实例化

             * 那么,接口如何实例化呢?

          * 按照多态的方式来实例化。

   * d:接口的子类

         * a:可以是抽象类。但是意义不大。

         * b:可以是具体类。要重写接口中的所有抽象方法。(推荐方案)

* C:案例演示

* 接口特点

public class Demo_Interface {
    public static void main(String[] args){
        Demo q = new Demo();
        q.print();
        System.out.println(Inter.a);
    }
}
interface Inter{
    public static final int a=10;
    /*public Inter(){}     接口中没有构造方法
    public void a(){       不允许接口中有方法体
}*/
    public abstract void print();
}
class Demo implements Inter{
    int a=22;
  
    public void print() {
        // TODO Auto-generated method stub
        System.out.println(a);
    }
    
}

 

运行结果:

22

10

注意:Inter.a

2.接口成员特点

   * 成员变量只能是常量,并且是静态的并公共的。

          * 默认修饰符:public static final

          * 建议:自己手动给出。

   * 构造方法:接口没有构造方法。

              * 成员方法:只能是抽象方法。

* 默认修饰符:public abstract

            * 建议:自己手动给出。

* B:案例演示

* 接口成员特点

360截图20161114113608578

注意:

在Demo类中创建了个空参构造,这个空参构造是继承Object,所有类未声明都是继承Object,本程序中Demo类中空参构造就是为了声明Object在程序中不起作用.

3.类与类,类与接口,接口与接口的关系

   * a:类与类:

               * 继承关系,只能单继承,可以多层继承。//多层继承就是每一个类都往上继承一个

  * b:类与接口:

              * 实现关系,可以单实现,也可以多实现。//注意类与接口是实现关系

              * 并且还可以在继承一个类的同时实现多个接口。

   * c:接口与接口:

              * 继承关系,可以单继承,也可以多继承。

0901

注意:类多实现的方法,接口多实现多继承的方法

4.抽象类和接口的区别

A:成员区别

      * 抽象类:

                * 成员变量:可以变量,也可以常量

                * 构造方法:有

                * 成员方法:可以抽象,也可以非抽象

      * 接口:

                * 成员变量:只可以常量

                * 成员方法:只可以抽象

* B:关系区别

                * 类与类

                            * 继承,单继承

                * 类与接口

                            * 实现,单实现,多实现

                * 接口与接口

                           * 继承,单继承,多继承

* C:设计理念区别

                * 抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。

                 * 接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。 

           * 对事物本质的抽象用抽象类,对事物功能的扩展用接口

5.猫狗案例加入跳高功能分析及其代码实现

   * A:案例演示

             * 动物类:姓名,年龄,吃饭,睡觉。

             * 猫和狗

             * 动物培训接口:跳高

案例:

public class Test1_Animal1 {
    public static void main(String[] args){
        Cat c = new Cat("加菲",8);
        c.eat();
        c.sleep();
        
        JumpCat j=new JumpCat("跳高猫",3);
        j.eat();
        j.sleep();
        j.jump();
    }

}
abstract class Animal{
    private String name;
    private int age;
    
    public Animal(){}
    public Animal(String name,int age){
        this.setName(name);
        this.setAge(age);
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public abstract void eat();
    public abstract void sleep();
}

interface Jumping{
    public void jump();
}
class Cat extends Animal{
    public Cat(){
        
    }
    public Cat(String name,int age){
        super(name,age);
    }

    public void eat() {
        // TODO Auto-generated method stub
        System.out.println("猫吃鱼");
    }

    public void sleep() {
        // TODO Auto-generated method stub
        System.out.println("侧着睡");
    }
    
}
class JumpCat extends Cat implements Jumping{
    public JumpCat(){}
    public JumpCat(String name,int age){
        super(name,age);
    }

    public void jump() {
        // TODO Auto-generated method stub
        System.out.println("猫跳高");
    }
    
}

 

输出结果:

猫吃鱼
侧着睡
猫吃鱼
侧着睡
猫跳高

posted @ 2016-11-14 19:46  小彭快跑  阅读(240)  评论(2编辑  收藏  举报