Java抽象类为什么不能被实例化
问题背景
在理解抽象类为什么不能被实例化之前,⾸先我们要了解以下⼏个问题。
问题⼀:什么是抽象类?
抽象类是Java中⼀种特殊的类,该类使⽤了abstract关键字进⾏修饰,该类允许有普通⽅法和抽象⽅法,该类不能够进⾏实例化(这个在后⾯进⾏解释)因为抽象类不能直接实例化,所以必须需要有实现⼦类。
问题⼆:为什么要有抽象类?
抽象类的使用抽象类是介于接⼝与普通类之间的⼀种结构,接⼝中定义的都是抽象⽅法,⽽类中都是普通⽅法。当我们存在⼀类事物,他们⼤多数结构和功能存在雷同,只有少部分存在不同,如果我们直接使⽤⼦类实现接⼝,那么结构和功能相同部分的代码将会造成⼤量冗余,因此我们需要⼀种结构,⾥⾯可以提供⼀部分已经实现了的共同的代码,剩下的⼀⼩部分由具体⼦类去实现即可,达到了代码的重⽤。
问题回答
1.从Java规范来看:很简单直了,Java程序中规定了抽象类不能实例化。强⾏实例化就会报错。
2.从功能⾓度来看:抽象类是⼀个结构和功能“不完整”的类,如果你让他强⾏“出⽣”的话,它可能会患有各种疾病,所以我们不能直接进⾏实例化,需要通过⼦类对结构和功能进⾏补全才能让它健康出⽣。
3.从内存分配⾓度来看:抽象类只在分配了在栈中的引⽤,没有分配堆中的内存。程序都有⼀个代码段,在内存中需要占据⼀定的内存,⽽抽象类没有具体的实现⽅法,⽆法具体的给它分配内存空间,所以为了安全,不JAVA不允许抽象类,接⼝直接实例化。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论