Java中的抽象类为什么不能实例化
我想问下为什么抽象类被abstract修饰的类不能被实例化,书上就写了抽象类不能实例化,在实际编译运行时也是会报错,想问下这为什么?希望回答的高手能从理论上和实际例子2方...
我想问下为什么抽象类被abstract修饰的类不能被实例化,书上就写了抽象类不能实例化,在实际编译运行时也是会报错,想问下这为什么?希望回答的高手能从理论上和实际例子2方面解释下
再问下,如果有这么一种情况
根据书上1抽象类不能实例化2抽象类中不一定要有抽象方法
我合在一起,如果有抽象类没抽象方法只有实例方法,为什么还是不能实例化new下 展开
再问下,如果有这么一种情况
根据书上1抽象类不能实例化2抽象类中不一定要有抽象方法
我合在一起,如果有抽象类没抽象方法只有实例方法,为什么还是不能实例化new下 展开
展开全部
首先抽象类不能实例化是一个java的语法规范。
抽象类中是可以包含抽线方法,不是必须。如果一个抽象类没有一个抽象方法,那么他和一个普通java类就没有任何区别了,也就是说,在这种情况下又没有abstract修饰都是一样的。定义了一个包含抽象方法的抽象类,其子类在继承自该抽象类的时候,子类就必须实现父类的所有抽象方法。之所以在java变成中存在这样一个语法规范,就是为了定义这种类型结构来解决生活中这样的一些实际问题。
比如举一个简单例子:
父亲(抽象类)是一个残疾人,他一生都想着要去见义勇(父类的抽象方法)为帮助他人,但是由于自生残疾行动不便,然后他就要求其所有的儿子(继承自抽象类的子类)能实现他的这个愿望(继承父类的抽象方法)。然而每一个儿子在实现父亲想见义勇为这个愿望的时候,每个儿子的做法是不一样的。大儿子喜欢这种方式的见义勇为(子类一有其自己的实现方法),二儿子喜欢其他的见义勇为的方式(子类二有其自己的实现方法)....因此java的抽象类就是用在这种场景中,解决这种问题的。
抽象类中是可以包含抽线方法,不是必须。如果一个抽象类没有一个抽象方法,那么他和一个普通java类就没有任何区别了,也就是说,在这种情况下又没有abstract修饰都是一样的。定义了一个包含抽象方法的抽象类,其子类在继承自该抽象类的时候,子类就必须实现父类的所有抽象方法。之所以在java变成中存在这样一个语法规范,就是为了定义这种类型结构来解决生活中这样的一些实际问题。
比如举一个简单例子:
父亲(抽象类)是一个残疾人,他一生都想着要去见义勇(父类的抽象方法)为帮助他人,但是由于自生残疾行动不便,然后他就要求其所有的儿子(继承自抽象类的子类)能实现他的这个愿望(继承父类的抽象方法)。然而每一个儿子在实现父亲想见义勇为这个愿望的时候,每个儿子的做法是不一样的。大儿子喜欢这种方式的见义勇为(子类一有其自己的实现方法),二儿子喜欢其他的见义勇为的方式(子类二有其自己的实现方法)....因此java的抽象类就是用在这种场景中,解决这种问题的。
展开全部
抽象类与接口紧密相关,它们不能实例化,并且常常部分实现或根本不实现。抽象类和接口之间的一个主要差别是:类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承。从抽象类派生的类仍可实现接口。可以在创建组件时使用抽象类,因为它们使您得以在某些方法中指定不变级功能,但直到需要该类的特定实现之后才实现其他方法。抽象类也制定版本,因为如果在派生类中需要附加功能,则可以将其添加到基类而不中断代码。
在实现抽象类时,必须实现该类中的每一个抽象方法,而每个已实现的方法必须和抽象类中指定的方法一样,接收相同数目和类型的参数,具有同样的返回值。
抽象类不能被实例化,也就是不能用new关键字去产生对象
抽象方法只需声明,而不需实现
抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类
在实现抽象类时,必须实现该类中的每一个抽象方法,而每个已实现的方法必须和抽象类中指定的方法一样,接收相同数目和类型的参数,具有同样的返回值。
抽象类不能被实例化,也就是不能用new关键字去产生对象
抽象方法只需声明,而不需实现
抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java抽象类不能实例化。
java抽象类:使用了关键词abstract声明的类叫作“抽象类”。
如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。
抽象方法,属于一种不完整的方法,只含有一个声明,没有方法主体。
java抽象类:使用了关键词abstract声明的类叫作“抽象类”。
如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。
抽象方法,属于一种不完整的方法,只含有一个声明,没有方法主体。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
抽象类就如他的名字一样是抽象的,他里面的方法都是没有方法体的,也就是没有实际的实现代码,而实例化后的对象是类的一个实体对象,是可以调用他的方法完成一些功能的,一个抽象类的方法没有方法体(半成品,呵呵),当然不能实例化了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
做了几年java,发现很多东西不是课本上写的那么简单。抽象类在公司通常不是由程序员定义的,而是由项目经理或者某个模块得设计人员。设计抽象类得原因通常只有一个:为了规范方法名。咱们都知道,抽象类必须要继承,不然没法用,作为模块设计者,可以把让底层程序员直接用得方法直接调用,而一些需要让程序员覆盖后自己做得方法则定义称抽象方法。
这个抽象类不难理解,关键是看怎么用。希望您在以后得学习中不但要明白为什么,还要明白怎么用。
这个抽象类不难理解,关键是看怎么用。希望您在以后得学习中不但要明白为什么,还要明白怎么用。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询