Java 抽象类abstract

来源:互联网 发布:美国人口老龄化数据 编辑:程序博客网 时间:2024/05/19 01:09

abstract抽象类

正如C++中存在着纯虚函数和抽象类
Java中同样存在抽象类关键字abstract

声明为抽象类  abstract class api {                public abstract void onCall(); // 声明为抽象方法                public void call() {                    onCall(); // 类中的方法还可以调用抽象方法                }            }

抽象方法可以被类中的其他方法调用 但是在抽象方法被实现前 抽象类不可实例化
一种典型的用法是利用匿名方法实现

    api ctx = new api() {        public void onCall() {        }    }

初始化时实现抽象类的抽象方法 这也是Android中常见的手法

和Interface的区别

Java中只允许单继承 所以一个类只能继承一个基类
一旦派生类继承了某个抽象类 它就不能再继承别的基类
而这时如果需要实现其他接口 只能依赖implements其他基类的interface

某种程度上来说 abstract和interface达成的效果是差不多的

之前分析过的interface实现的 接口
java interface实现的接口
C++抽象类实现的 接口
C++virtual实现的 接口

Java abstract实现的接口package com.company;abstract class api{    public abstract void onCall();    void normal() {        onCall();    }}class apiCtx extends api {    public void onCall() {        System.out.println("apiCtx.onCall");    }}class apiContent {    private api api_;    public void call(api api) {        api_ = api;        api_.onCall();    }}public class Main{    public static void main(String[] args) {        apiContent ctx = new apiContent();        ctx.call(new apiCtx());    }}

实现方式和C++抽象类实现接口的方式及其相似

原创粉丝点击