zoukankan      html  css  js  c++  java
  • java 抽象类为什么不能被实例化?

    我把CSDN论坛里面的一个帖子内容list到下面,自己看着理解,东家一言,西家一语,杂合起来,基本上也就理解了java中的抽象类为什么不能被实例化了。

    因篇幅有限,只能罗列部分留言

    以下内容不分先后顺序

    =====================================

    抽象类只在分配了在栈中的引用,没有分配堆中的内存。程序都有一个代码段,再内存中需要占据一定的内存,而抽象类没有具体的实现方法,无法具体的给它分配内存空间,所以为了安全,不JAVA不允许抽象类,接口直接实例化

    =====================================

    哲学角度,抽象基类往往在逻辑上无法实体化,比如说让别人去买水果,不说买什么,就说买水果,显然是买不到一种叫“水果”的东西的。

    =====================================

    主要是两点,一个是抽象类是一个不完整的类,一个是内存分配问题。
    实际上抽象类更多提供的是一个框架的功能,参数比接口更详细些。

    =====================================

    本末倒置了
    抽不抽象是设计时该考虑的问题,不能问为什么抽象类不能实例化
    因为在设计时,考虑到某些类所具备的信息不足以实例化一个对象,才设计成抽象的
    所以问题反过来就是答案:
    因为这个类不能够被实例化,所以才设计成抽象的,至于为什么这么做,问你的设计师吧,他也许会给出你答案
    不过设计师的脾气都不太好,给你一棒子叫你照着做就行了也是有可能的

    =====================================

    抽象类,就像是向别人声明:我能赚大钱
    实例化就是具体的行动
    因为抽象类只是个声明,而没有计划,也不知道怎么赚钱
    所以我们是不会投资给钱(内存)他的,就算投资他他也不能做任何事
    为了保存大家的利益,没有具休的赚钱计划不能让他执行

    =====================================

    不仅JAVA,其他任何语言都一样~这是由语言的设计决定了的,就是纯粹为了继承而存在

    =====================================

    抽象这个词已经很好的说明这一点了,我的理解是:对事物进行抽象通常是基于一定的经验,从众多的经验中总结出规律,浓缩的结果可以在以后多次获利,但是经验并不能真正帮你工作,你还是需要融入实践应用!

    =====================================

     学过汇编你会知道,程序都有一个代码段,再内存中需要占据一定的内存,而抽象类没有具体的实现方法,无法具体的给它分配内存空间,所以为了安全,不JAVA不允许抽象类,接口直接实例化

    =====================================

    面向对象思想是对现实社会的模拟(抽象),从哲学上讲进化不完全的物种是不能生存的!

    =====================================

     这是从设计思想层面的东西,为什么要纠结这个问题呢?
    说白一点,这就是java的使用规范.

    =====================================

    如果你是一个老板,你问一个应聘的人员:你会什么?他给你一个“我不知道”的答案,你会怎么做!!
    这个例子视乎能更现实的说明你的这个问题。面向对象语言是从现实中抽象出来的,它该符合正常的逻辑秩序。

    =====================================

     Java中是允许不含抽象方法的抽象类的,我认为应该是出于安全的考虑,编译器强制规定不允许抽象类产生对象!

    =====================================

    java里这么规定的,原因我个人认为是抽象类里有未实现的抽象方法,实例化时不能正常分配内存吧,而且调用这个方法时不是要出异常吗

    参考

    https://bbs.csdn.net/topics/330265812

  • 相关阅读:
    svn command line tag
    MDbg.exe(.NET Framework 命令行调试程序)
    Microsoft Web Deployment Tool
    sql server CI
    VS 2010 One Click Deployment Issue “Application Validation did not succeed. Unable to continue”
    mshtml
    大厂程序员站错队被架空,只拿着五折工资!苟活和离职,如何选择?
    揭秘!Windows 为什么会蓝屏?微软程序员竟说是这个原因...
    喂!千万别忘了这个C语言知识!(~0 == -1 问题)
    Linux 比 Windows 更好,谁反对?我有13个赞成理由
  • 原文地址:https://www.cnblogs.com/baxianhua/p/10876139.html
Copyright © 2011-2022 走看看