抽象类为什么不能创建对象?
目录
抽象类
比较区别
创建对象
抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
比如,在一个图形编辑软件的分析设计过程中,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域并不是直接存在的,它就是一个抽象概念。而正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。
比较区别
与具体类比较
抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
允许(但不要求)抽象类包含抽象成员。
抽象类不能被密封。
与接口比较
抽象类表示该类中可能已经有一些方法的具体定义,但是接口就仅仅只能定义各个方法的界面(方法名,参数列表,返回类型),并不关心具体细节。
接口是引用类型的,和抽象类的相似之处有三点:
不能实例化;
包含未实现的方法声明;
派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)。 [2]
抽象类与接口紧密相关。然而接口又比抽象类更抽象,这主要体现在它们的差别上:
类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。
抽象类当中可以存在非抽象的方法,可接口不能,且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。
抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)。
抽象类是对象的抽象,然而接口是一种行为规范。
创建对象
抽象类尚未实现方法,所以不能创建对象。
创建对象去调用方法是指做明确的事情,而这个抽象方法并不明确,所以只有继承抽象类去实现抽象方法才可以。
抽象类为什么不能创建对象?相关推荐
- 抽象类可用于创建对象吗_野芝麻,见过吗?可用于肺热咳血、血淋、跌打损伤...
野芝麻 来源产地 唇形科野芝麻属植物野芝麻,以地上全草或花入药.夏季采花:夏秋采全草,晒干 生于林缘.林间空地.灌木丛间,或溪边.山脚下.路旁草丛中.分布辽宁.吉林.黑龙江.河南.河北.山西.陕西.江 ...
- 抽象类可用于创建对象吗_芦竹,见过吗?清热泻火。可用于热病烦渴,风火牙痛...
芦竹 来源产地 禾本科芦竹属植物芦竹,以根状茎及嫩笋芽入药.四季可采,将根头砍下,洗净,除去须根,切片晒干. 生于溪旁及屋边较潮湿的深厚的土壤处. 分布于西南.华南及江苏.浙江.湖南等地. 别名芦荻头 ...
- 抽象类可用于创建对象吗_非布司他片可用于痛风治疗吗?使用时有什么禁忌吗?...
非布司他片是适合痛风患者高尿酸血症的长期治疗.由于生活中还有部分人对这个药存在一定的认识误区,所以对这个药还是会担心不良反应.那么,今天小康就根据相关的药品资料,为大家介绍一下非布司他片. 一.非布司 ...
- “接口”的定义及其与“抽象类”的区别
我们知道一个有抽象方法的类是抽象类,而当一个类中全是抽象方法时,就可以定义为接口(interface) 接口命名通常以"I"开头: 接口中的方法默认有public abstract ...
- java学习笔记(五)----super用法,final用法,抽象类,接口
子类不会继承父类的构造方法,在子类的构造方法中可使用super(参数列表)调用父类的构造方法. class Person { String name; int age; public Pers ...
- c++ 纯虚函数和抽象类那些事(一)
1.纯虚函数与抽象类 C++中的纯虚函数(或抽象函数)是我们没有实现的虚函数!我们只需声明它!通过声明中赋值0来声明纯虚函数! 纯虚函数:没有函数体的虚函数 抽象类:包含纯虚函数的类 /*** @br ...
- c++ 不允许使用抽象类类型的对象_Java中日期API的使用总结
日期总结 1. Date类 1.1 Date date = new Date(); 以当前的系统时间创建Date对象 (构造方法) 1.2 Date date = new Date( long mil ...
- abstract类_012 JAVA 抽象类、接口、String类的基础了解
1.抽象方法和抽象类 抽象方法:使用abstract修饰的方法,没有方法体,只有声明.抽象方法可以当做是一种规范,让子类必须实现. 注意: 1.抽象方法没有方法体,只能以分号结尾 2.抽象方法只能声明 ...
- 对接口编程:接口和抽象类
在<大话设计模式>这本书中,我会听到这个字眼"对接口编程",而在文中的类图中.会提出这样一个疑问?为什么有的用的是:接口?有的用的是抽象类呢? 本文主要介绍下面内容:接 ...
最新文章
- 想学习编程,我是如何入坑python的?
- 重复工作自动化——excel导入方案
- 洛谷3317 SDOI2014重建(高斯消元+期望)
- python已知Camera及Lidar2到Lidar1外参,求Camera到Lidar2外参
- Linux 线程与互斥锁的使用
- 深入理解JavaScript闭包(closure) 【收藏】
- redis连不上java,java使用jedis连不上linux上redis服务
- java中无限大_Java 9中的无限集
- 阿里ai布局开始_如何开始使用AI
- jQuery第一个孩子“这个”
- 用TCP/IP实现自己简单的应用程序协议:成帧器部分
- 弱水三千,只取一瓢饮 的意思
- 图像处理 - ImageMagick 简单介绍与案例
- 餐饮行业裂变解决方案
- 小试牛刀:猫狗识别 Cat VS Dog
- Linux 关机与重启
- 我是如何在一周内准备完所有保研材料并成功保送北航的
- MT4错误代码最完整汇总
- js如何降低全局变量带来的命名污染
- 企业号 php 考勤,使用微信企业号实现微信考勤和办公
热门文章
- Markdown(5):锚链接
- KVM 虚拟化技术 | 虚拟化平台部署
- 虚拟机中通过docker创建docker run -itd -p 8080:8080 -p 8088:8088 镜像ID /bin/bash创建后无法访问
- 数组属于一种原生类_前端程序员面试你应该懂的原生JS——1
- 基于个人信用评分的建模分析和授信决策
- 餐饮油烟在线监控平台助力南京市餐饮油烟治理顺利进行!(安科瑞 须静燕)
- 关于WS2812上RGB与HSV转换函数实现
- 奥林匹克计算机怎么学,信息学竞赛金牌教练带你C++入门!
- 一段将图片变成手绘风格的python代码
- 23三种设计模式详解