zoukankan      html  css  js  c++  java
  • Interface Vs. Abstract Class

    此文参考:

    http://www.cnblogs.com/liu-5525/p/5614463.html

    http://www.studytonight.com/java/abstract-class.php

    http://www.studytonight.com/java/java-interface.php

    1. 接口: 被用来建立 类 与 类 之间关联的标准

    Interface is a pure abstract class.  Methods are declared without body.

    ```````````

    interface Move{

      int AVERAGE_SPEED = 40;

      void move();

    }

    ````````````````

    compler will comprehend above codes as below

    `````````````````````````````````````````

    public static final int AVERAGE_SPEED = 40;

    public abstract void move();

    ````````````````````````````````````````````

    compiler automatically converts methods of interface as public and abstract, and 

    data members as public, static and final by default

    Rules for using interface:

    1. methods inside interface must not be static, final, native or strictfp.

    2. interface can extend one or more other interface.

    3. interface can be nested inside another interface

    2. 抽象类:只要类中有一个抽象方法,此类就被标记为抽象类,实际上抽象类除了被继承以外没有任何意义。

    If a class contain any abstract method then the class is decalred as abstract class. An abstract class is never instantiated. It used to provide abstraction

    `````abstract class class_name{}

    Abstract methods: decalred without body

    `````abstract return_type function_name();

     ````````````````````````````````````

    abstract class A{

      abstract void callme();

      public void normal(){System.out.print();}

    }

    `````````````````````````````````

    1. An abstract class must contain at least one abstract method

    2. Abstact class can have constractors, member variables and normal mehods

    3. abstract class are never instantiated

    4. when you extend abstract class with abstract method, you must define the sbatract method in the child class, or make the child class abstract

    区别:

    一般的应用里,最顶级的是 接口(interface),然后是抽象类实现接口, 最后才到具体类实现。不是很建议具体类直接实现接口,一般的设计模式是面向接口编程,而非面向现实编程

    **** 接口的另外一个应用是实现 多重继承, 我们知道一个类可以implement multiple interface, but it can only extend one abstract class. we can make use of interface&inner class to implement mutiple extends

    abstract class Example1{

    abstract String getName();

    }

    abstract class Example2{

    abstract int getAge();

    }

    public class MainExample{

    // inner class

    class Test1 extends Examples1{

       String getName(){return "username"; }

    }

    class Test2 extends Examples2{

      int getAge(){return 1;}

    }

    public String getName(){

     return new Test1().getName();

    }

    public int getAge(){

    return new Test2().getAge();

    }

    }

    another implementation

    public class Example1{

    public String getName() {return "userName";}

    public class example2{

    public int getAge(){return 2;}

    }

    public class MainExample{

    public class Test1 extends Example1{

    public String getName(){ return super.getName();}

    }

    pubic class Test2 extends Example2{

    public int getAge(){return super.getAge();}

    }

    public String showName(){

    return new Test1().getName();

    }

    public int showAge(){

    return new Test2().getAge();

    }

    public static void main(String[] args){

     MainExample example = new MainExample();

    System.out.println(example.showName());

    System.out.println(example.showAge());

    }

    }

  • 相关阅读:
    easyui学习笔记1—增删改操作
    sql点滴37—mysql中的错误Data too long for column '' at row 1
    javascript获取当前url
    escape()、encodeURI()、encodeURIComponent()区别详解
    js文本框提示和自动完成
    javascript js string.Format()收集
    超链接标签为什么会造成页面颤抖
    asp.net mvc 4.0常见的几个问题
    如何使用Flashfxp上传下载文件
    点击按钮显示谷歌地图
  • 原文地址:https://www.cnblogs.com/morningdew/p/5617934.html
Copyright © 2011-2022 走看看