码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象_接口

时间:2015-05-07 15:57:02      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

一、接口的概念:

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

    2、class用于定义类,interface 用于定义接口

 

 

 

二、接口定义时,格式特点:
     1、接口中常见的定义:常量,抽象方法
     2、接口中的成员都有固定修饰符。
           常量:public static final
           方法:public abstract

   3、记住:接口中的成员都是public的。
       只要是interface里面成员都有固定修饰符,可以省略但一般为了好看都要加上

 

 

 

三、类与类之间的关系

    类与类之间是继承关系  extends

    类与接口之间是实现关系  implements

    接口之间的关系也是继承extends(可以多继承)

 

 

四、接口的定义

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

    接口可以被类多实现(接口里的方法都是抽象的没有方法体,而继承父类的方法有方法体) 也是对多继承的转换形式 java支持多实现

interface A{
    void methodA();
}
interface B //extends A//java在接口之间支持多继承 因为接口都没有方法体
{
    void methodB();
}
interface C extends B,A{
    void methodC();
}
class D implements C{
    public void methodA(){}
    public void methodB(){}
    public void methodC(){}
}
public class InterfaceDemo {
    public static void main(String[] args) {
        Test t = new Test();
        System.out.println(t.NUM);
        System.out.println(Test.NUM);
        System.out.println(Inter.NUM);

        //t.NUM = 4;//错误,因为NUM是一个常量了
    }
}
interface Inter{
    public static final int NUM = 3;
    public abstract void show();
}

interface InterA{
    public abstract void show();
}

class Demo{
    public void function(){}
}
//java 在继承一个类的同时还可以支持多实现
class Test extends Demo implements Inter,InterA {
    public void show(){}
}

 

 

 

五、接口的扩展性

  接口大多用于扩展功能用的,(基本功能定义在类中,扩展功能定义在接口中)

 1 public class InterfaceTest1 {
 2     public static void main(String[] args) {
 3 
 4     }
 5 }
 6 abstract class Student{
 7     abstract void study();
 8     void sleep(){
 9         System.out.println("sleep");
10     }
11 }
12 //将一些不是所有人都具有的功能提取出来 封装成一个接口,需要的人就去实现他,不需要的就不用去实现他
13 interface Smoking{
14     public abstract void smoke();
15 }
16 
17 //如果ZhangSan吸烟那就就实现Smoking这个接口
18 class ZhangSan extends Student {
19     void study(){}
20 }
 1 public class InterfaceTest2 {
 2     public static void main(String[] args) {
 3 
 4     }
 5 }
 6 
 7 //该程序的设计思想有问题,不要把一个对象设计成一个类,
 8 abstract class Student{
 9     abstract void study();
10     void sleep(){
11         System.out.println("sleep");
12     }
13 }
14 
15 //提供一个接口,只要让需要的类就去实现它,不需要的就不用实现它,这样就可以多了很多功能
16 interface Smoking{
17     public void smoke();
18 }
19 
20 //zhangsan这人抽烟就继承Smoking
21 class zhangsan extends Student implements Smoking{
22     void study(){}
23     public void smoke(){}
24 }
25 class lisi extends Student{
26     void study(){}
27 }

 

 

 

六、抽象类和接口的异同点:

  相同点:   

    1、都是不断向上抽取出来的

  不同点:     

    1、抽象类需要被继承,而且只能但继承。

       接口需要被实现,而且可以多实现  

    2、抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象反法         

       接口中只能定义抽象方法,必须由子类去实现

      3、抽象类的继承,是 is a关系,在定义该体系的基本共性内容         

       接口的实现时 like a关系,在定义体系额外功能

面向对象_接口

标签:

原文地址:http://www.cnblogs.com/LO-ME/p/3553561.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!