社区
C++ 语言
帖子详情
为什么抽象类不能创建对象?欢迎讨论
zhangguagua
2003-11-18 06:16:44
rt
...全文
462
17
打赏
收藏
为什么抽象类不能创建对象?欢迎讨论
rt
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
晨星
2003-11-19
打赏
举报
回复
“抽象类”就是为了支持面向对象思想中“针对接口编程”(Programming to Interface)的概念。如果你的程序规模较小,用不着,那完全可以像deg936(小可)兄说得那样,别定义抽象类,就定义一般的类。
反过来说,如果可以实例化,那也就不叫抽象类了,就是一般的类而已,没有任何区别了。
北湖春风
2003-11-19
打赏
举报
回复
这是一个设上的问题,而不单纯是语法上的规定。之所以这样是因为,面向对象编程的一种思想,就是面向接口编程。面向接口编程,使你的代码块间具有很小的藕合度,可以使你的代码最大限度的得到重用,也使代码具有可扩展性。当需求发生变化时,可以容易的改变代码。
面向接口编程,是现代软件工程的重要思想。这个在c++中可以由抽象类来实现,在java中则直接就有接口的概念,即interface.当然定义出一套接口是很难的,要有很丰富的经验,和知识。
Paradise2004
2003-11-19
打赏
举报
回复
请参考<effective c++>,你会得到答案的
deg936
2003-11-19
打赏
举报
回复
就是为了使用方便,才弄出个抽象类,如果你要实例化,那就不要把它定义成抽象类嘛。
就好像一个复杂的东西,为了帮我们理解,先弄一个最基本的特征出来。但是如果你要让它能概括一切,就必须往上面添东西,而根本没有必要先产生一个无用的东西出来。
Bandry
2003-11-19
打赏
举报
回复
比如说一个形状类,它应该是一个抽象类,因为如果你创建这个类的实例,别人包括你自己根本就不知道这个类实例是什么东西(什么形状?正方、长方、三角),因此创建它的实例根本就没有任何意义。所以规定抽象类不能创建实例。
这样说不知道行不行?
wshcdr
2003-11-19
打赏
举报
回复
这个是C++的规定
如果要问什么
恐怕不是一两本书可以解决的
这个问题好比
为什么水在常态下是液体
实在是很难回答
sharkhuang
2003-11-19
打赏
举报
回复
要是里面有不是virtul的东西,是可以创建的!但是那就是纯虚礼函数了哦!
Meyer
2003-11-19
打赏
举报
回复
想过头了吧,
就当他是法律了。
qufan
2003-11-18
打赏
举报
回复
小弟我的理解是:要成一个对象一定要分配空间的吧
具体到类的一般成员函数是怎么在内存中存在的我不是很清楚
但是在讲到静态成员函数的差异性的时候,我觉得形成对象的时候应该有一个函数的拷贝吧
zhangguagua
2003-11-18
打赏
举报
回复
ninjaiking(卷土重来)
回答的好生动呀,感谢感谢。
ninjaiking
2003-11-18
打赏
举报
回复
比如说对于我们人类,从中可以区分中国人,美国人等,中国人还可以分为汉族与其他少数民族.一个人,必然属于世界上的某个国家和某个民族.
人类就好比一个抽象类,是我们创造的一个高度抽象的概念,并不存在人类本身的实例.
他的唯一用途就是被继承,产生一个可以实在存在的人.
zhangguagua
2003-11-18
打赏
举报
回复
小弟不才,应该是看了不少书了,还是不解,为什么不让创建对象。麻烦大哥给说说,谢谢
lemon520
2003-11-18
打赏
举报
回复
多看书就知道了!
zhangguagua
2003-11-18
打赏
举报
回复
我的意思是,为什么要这么规定,如果抽象类能建立对象,对实现接口,多态,我看也没有什么阻碍嘛。
cuistar
2003-11-18
打赏
举报
回复
就像抽象类中的虚函数必须是纯虚函数
cuistar
2003-11-18
打赏
举报
回复
这还用说阿?规定
zhangguagua
2003-11-18
打赏
举报
回复
up
java中的
抽象类
和接口可以实例化吗?,它们可以有构造方法吗?(扩展:接口和
抽象类
的区别)
java中的
抽象类
和接口可以实例化吗?,可以有构造方法吗?(扩展:接口和
抽象类
的区别)
抽象类
是否可以实例化
讨论
1.
抽象类
可以实例化吗?Answer:(1)、首先,
抽象类
是不可以实例化的,但只是不可以传统做法中的通过new来进行实例化,而是通过父类的应用来指向子类实例间接地实现父类的实例化,因为子类在实例化之前,一定会优先实例化它的父类。这样创建了继承
抽象类
的子类对象,也就是把其父类(
抽象类
)给实例化了。代码如下:父类:public abstract class B {private String s...
JAVA基础(三)
抽象类
和抽象函数
抽象函数和
抽象类
都是用abstract开头,
抽象类
和抽象函数有以下的规则:
抽象类
不能
生成对象(意思就是只能当做父类) 如果一个类中有抽象函数,那么这个类必须是
抽象类
一个类中即使没有抽象函数也可以被声明为
抽象类
抽象类
不能
生成对象,那到底能
不能
实现构造函数呢? 其实是可以的,在继承的子类中,当我们生成子类的对象,它就会调用父类的构造函数。下面介绍一个小例子,新建一个
抽象类
Person: abst
抽象类
和上转型对象的关系,多态和上转型对象的关系
Part 1
抽象类
和对象的上转型对象 1、abstract方法只允许声明不允许实现; 2、abstract类
不能
用new运算符
创建对象
; 3、若一个非
抽象类
是某个
抽象类
的子类,则它必须重写父类的抽象方法并给出方法体(也可以继承这个abstract方 法); 4、不允许abstract和final同时修饰一个方法(理由见上条) 5、abstract类中可以有abstr
抽象类
接口 匿名类的区别
1
抽象类
当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体。但在某些情况下,某个父类并不需要实现,因为它只需要当做一个模板,而具体的实现,可以由它的子类来实现。比如说一个长方体的表面积和一个立方体的表面积
C++ 语言
64,318
社区成员
250,497
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章