Java 抽象类abstract

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++抽象类实现接口的方式及其相似

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值