目录

抽象类

比较区别

创建对象


抽象类

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。

比如,在一个图形编辑软件的分析设计过程中,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域并不是直接存在的,它就是一个抽象概念。而正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。


比较区别

与具体类比较

  1. 抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。

  2. 允许(但不要求)抽象类包含抽象成员。

  3. 抽象类不能被密封。

与接口比较 

抽象类表示该类中可能已经有一些方法的具体定义,但是接口就仅仅只能定义各个方法的界面(方法名,参数列表,返回类型),并不关心具体细节。

接口是引用类型的,和抽象类的相似之处有三点:

  1. 不能实例化;

  2. 包含未实现的方法声明;

  3. 派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)。 [2]

抽象类与接口紧密相关。然而接口又比抽象类更抽象,这主要体现在它们的差别上:

  1. 类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。

  2. 抽象类当中可以存在非抽象的方法,可接口不能,且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。

  3. 抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)。

  4. 抽象类是对象的抽象,然而接口是一种行为规范。


创建对象

抽象类尚未实现方法,所以不能创建对象。

创建对象去调用方法是指做明确的事情,而这个抽象方法并不明确,所以只有继承抽象类去实现抽象方法才可以。

抽象类为什么不能创建对象?相关推荐

  1. 抽象类可用于创建对象吗_野芝麻,见过吗?可用于肺热咳血、血淋、跌打损伤...

    野芝麻 来源产地 唇形科野芝麻属植物野芝麻,以地上全草或花入药.夏季采花:夏秋采全草,晒干 生于林缘.林间空地.灌木丛间,或溪边.山脚下.路旁草丛中.分布辽宁.吉林.黑龙江.河南.河北.山西.陕西.江 ...

  2. 抽象类可用于创建对象吗_芦竹,见过吗?清热泻火。可用于热病烦渴,风火牙痛...

    芦竹 来源产地 禾本科芦竹属植物芦竹,以根状茎及嫩笋芽入药.四季可采,将根头砍下,洗净,除去须根,切片晒干. 生于溪旁及屋边较潮湿的深厚的土壤处. 分布于西南.华南及江苏.浙江.湖南等地. 别名芦荻头 ...

  3. 抽象类可用于创建对象吗_非布司他片可用于痛风治疗吗?使用时有什么禁忌吗?...

    非布司他片是适合痛风患者高尿酸血症的长期治疗.由于生活中还有部分人对这个药存在一定的认识误区,所以对这个药还是会担心不良反应.那么,今天小康就根据相关的药品资料,为大家介绍一下非布司他片. 一.非布司 ...

  4. “接口”的定义及其与“抽象类”的区别

    我们知道一个有抽象方法的类是抽象类,而当一个类中全是抽象方法时,就可以定义为接口(interface) 接口命名通常以"I"开头: 接口中的方法默认有public abstract ...

  5. java学习笔记(五)----super用法,final用法,抽象类,接口

    子类不会继承父类的构造方法,在子类的构造方法中可使用super(参数列表)调用父类的构造方法. class Person { String name;   int age;   public Pers ...

  6. c++ 纯虚函数和抽象类那些事(一)

    1.纯虚函数与抽象类 C++中的纯虚函数(或抽象函数)是我们没有实现的虚函数!我们只需声明它!通过声明中赋值0来声明纯虚函数! 纯虚函数:没有函数体的虚函数 抽象类:包含纯虚函数的类 /*** @br ...

  7. c++ 不允许使用抽象类类型的对象_Java中日期API的使用总结

    日期总结 1. Date类 1.1 Date date = new Date(); 以当前的系统时间创建Date对象 (构造方法) 1.2 Date date = new Date( long mil ...

  8. abstract类_012 JAVA 抽象类、接口、String类的基础了解

    1.抽象方法和抽象类 抽象方法:使用abstract修饰的方法,没有方法体,只有声明.抽象方法可以当做是一种规范,让子类必须实现. 注意: 1.抽象方法没有方法体,只能以分号结尾 2.抽象方法只能声明 ...

  9. 对接口编程:接口和抽象类

    在<大话设计模式>这本书中,我会听到这个字眼"对接口编程",而在文中的类图中.会提出这样一个疑问?为什么有的用的是:接口?有的用的是抽象类呢? 本文主要介绍下面内容:接 ...

最新文章

  1. 想学习编程,我是如何入坑python的?
  2. 重复工作自动化——excel导入方案
  3. 洛谷3317 SDOI2014重建(高斯消元+期望)
  4. python已知Camera及Lidar2到Lidar1外参,求Camera到Lidar2外参
  5. Linux 线程与互斥锁的使用
  6. 深入理解JavaScript闭包(closure) 【收藏】
  7. redis连不上java,java使用jedis连不上linux上redis服务
  8. java中无限大_Java 9中的无限集
  9. 阿里ai布局开始_如何开始使用AI
  10. jQuery第一个孩子“这个”
  11. 用TCP/IP实现自己简单的应用程序协议:成帧器部分
  12. 弱水三千,只取一瓢饮 的意思
  13. 图像处理 - ImageMagick 简单介绍与案例
  14. 餐饮行业裂变解决方案
  15. 小试牛刀:猫狗识别 Cat VS Dog
  16. Linux 关机与重启
  17. 我是如何在一周内准备完所有保研材料并成功保送北航的
  18. MT4错误代码最完整汇总
  19. js如何降低全局变量带来的命名污染
  20. 企业号 php 考勤,使用微信企业号实现微信考勤和办公

热门文章

  1. Markdown(5):锚链接
  2. KVM 虚拟化技术 | 虚拟化平台部署
  3. 虚拟机中通过docker创建docker run -itd -p 8080:8080 -p 8088:8088 镜像ID /bin/bash创建后无法访问
  4. 数组属于一种原生类_前端程序员面试你应该懂的原生JS——1
  5. 基于个人信用评分的建模分析和授信决策
  6. 餐饮油烟在线监控平台助力南京市餐饮油烟治理顺利进行!(安科瑞 须静燕)
  7. 关于WS2812上RGB与HSV转换函数实现
  8. 奥林匹克计算机怎么学,信息学竞赛金牌教练带你C++入门!
  9. 一段将图片变成手绘风格的python代码
  10. 23三种设计模式详解