黑马程序员技术交流社区
标题:
黑马程序员 关于抽象类的小问题?
[打印本页]
作者:
北极雪871208
时间:
2014-3-24 19:15
标题:
黑马程序员 关于抽象类的小问题?
---------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------
抽象类中是否有构造函数?
抽象关键字abstract不可以和哪些关键字共存?
抽象类中可不可以没有抽象方法?
求技术分!
---------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------
作者:
透过生活
时间:
2014-3-24 20:11
首先,抽象类不能实例化对象,所以不可能有构造函数。因为无意义。
再者,好像没有什么关键字不能共存的。要说有,就是final了
最后,如果没有抽象方法,那要用抽象类干什么用呢。
但是可以有不是抽象的方法。
作者:
北极雪871208
时间:
2014-3-25 08:23
透过生活 发表于 2014-3-24 20:11
首先,抽象类不能实例化对象,所以不可能有构造函数。因为无意义。
再者,好像没有什么关键字不能共存的。 ...
谢谢大神!小弟初学者,这下明白了!
作者:
my_heima
时间:
2014-3-25 14:53
分析下你的问题吧,沙发兄的貌似有点片面哦
首先,要明白抽象类的定义,抽象方法的类叫做抽象类,也就是一个类只要有有声明但是没有方法体的方法那么这个类就是抽象类。简言之就是可以有存在方法体的方法。而接口是一个极度抽象类,已经规定死了,它里面的方法都是抽象的方法。
明白了这两者的定义,我们再来看看构造函数,构造函数也是函数,作用于创建对象和初始化,接口中成员都是无方法体的方法,实例化无意义,也就没有内置构造函数,而抽象类有可以使用的其他方法,所有有构造函数,此时子类的构造函数会super()。
所以,抽象类无构造函数得看是不是纯抽象类还是特殊的抽象类也就是接口。
第二问中讨论冲突关键字其实无实际意义,关键看是否在继承,重写方法时遇到private,final,static等这些限制,限制了可以说冲突,楼主还是要把这些概念搞清楚,理解为什么冲突。
第三问跟第一问的分析可能有点重复,楼主或许已经明白了,抽象类如果是接口,就不能没有抽象方法,如果是普通抽象类就可以存在不是抽象方法的方法,
抽象类其实是将所有类共性集中,进行模块化设计时用到了,希望楼主好好理解
说的有些啰嗦,希望有所帮助。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2