美文网首页
抽象类和接口

抽象类和接口

作者: 谢宇鹏 | 来源:发表于2018-04-19 17:36 被阅读0次
感性上的区别 :
  • 抽象类,本质上也是类,倾向于描述一个对象。如果你想要构造的,更像是一个物体,就用抽象类。比如抽象工厂。
  • 接口,更倾向于作为 操作 的集合。比如业务接口。
理性上的区别(一部分):
  • 方法,接口的方法默认都是 public abstract,抽象类的抽象方法不能是 private 和 static,其他方法没有限制。
  • 属性,接口中属性默认都是 public static final,而抽象类你就当做普通类一样想。
  • 抽象类可以没有抽象方法(当做一个普通类使用),接口里必须是抽象方法。
接口的属性为什么必须是 public static final :
  • public接口就是为了给别人使用的,所以公开
  • static修饰的变量,跟随接口的初始化就存在(参考类的初始化),所以它是属于这个接口的。如果非 static ,就必须创建对象的时候才能有,但是接口不能实例化。
  • final修饰的变量一旦初始化不能被修改,防止实现类去修改它。Java是多实现,多个实现类可以修改的话,属性的值不好控制,与其放在接口中,还不如放在具体类
    中比较好。

备注:接口中属性和方法,可以不加修饰符直接写,但是我们通过 javap 反编译一下就能看到

package com.xieyupeng.springboot;
public interface Test {

    int i = 0;

    void test1();

}
1.png
抽象类和接口类为什么都不能被实例化 :

实例化表示成为了一个具体,如果它有属性,我们能获取;如果它有方法,我们能调用执行方法体的操作,哪怕是空方法体。接口都是抽象方法,用它是不能实例化出一个属性和方法都是具体(实现)的对象。而抽象方法虽然可以没有抽象方法(当做一个普通类来使用),但是 JVM 没有必要动态判断,来决定是否能实例化,因为抽象类的初衷不是为了当做一个普通类来使用。

备注:

在模板方法模式中,抽象类得到了一个很好的利用,可以借鉴。
1、把公共的方法具体实现,方便子类使用;并定义为 final,防止子类修改;
2、需要子类具体实现的,才定义为抽象方法,这样子类就必须实现了,除非子类也是抽象方法;
3、使用 钩子方法。

相关文章

  • 5.5-全栈Java笔记:接口的定义和使用

    接口interface 接口的作用 为什么需要接口?接口和抽象类的区别? 接口就是比“抽象类”还“抽象”的“抽象类...

  • java的final关键字

    ——修饰类、接口和抽象类 final可以修饰方法,属性,类!但是不能修饰接口,抽象类;因为 接口和抽象类本身就是...

  • 接口和抽象类的区别

    接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样。接口是对动作的抽象,抽象类...

  • 抽象类和接口的区别

    以下两篇文章介绍了接口和抽象类的概念接口概念抽象类概念 抽象类和接口的区别: 抽象类:需要使用abstract关键...

  • 接口和抽象类

    接口和抽象类的区别? 接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制...

  • Android_开发_Day12_抽象类和接口

    Android_开发Day12抽象类和接口 目的: 知道什么是抽象类,什么是接口,学会抽象类的使用,与接口的使用。...

  • Java--接口和抽象类

    ·为什么需要接口?接口和抽象类的区别?  接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束...

  • Kotlin 零基础学习 接口和抽象类

    接口:接口就是暴露一种物体与另外一种物体沟通的方法 抽象类 接口 这么看接口和抽象类没什么区别,抽象类能干的接口也...

  • 接口,抽象类,工厂设计模式,代理模式

    一、接口的结构: 抽象方法 全局常量 最终写法: 其他内部结构内部类内部抽象类内部接口 二、接口和抽象类 抽象类可...

  • 接口跟抽象类的对比

    抽象类和接口的区别抽象类被子类继承 接口被类实现接口可以做方法生命 抽象类可以做方法生命 也可以做方法实现接口中定...

网友评论

      本文标题:抽象类和接口

      本文链接:https://www.haomeiwen.com/subject/vgpwkftx.html