黑马程序员技术交流社区

标题: 接口和抽象类 [打印本页]

作者: 邝雄伟    时间: 2013-2-2 15:29
标题: 接口和抽象类
02.interface Demo1

03.{

04.void function1();

05.}

06.

07.abstract class Demo2

08.{

09.abstract void funtion2();

10.}

11.

12.

13.public class Test5 {

14./*

15.* 想问大家一个问题,希望大家超越自己。

16.* */

17.public static void main(String[] args)

18.{

19./*

20.* 在主函数里无法直接创建接口和抽象类对象的原因,我有三个疑问:

21.* 1,接口和抽象类没有构造函数?

22.* 2,接口和抽象类的构造函数被私有化了?

23.* 3,两者被JVM制动识别了,是一种底层规则吗?

24.*

25.* 求详解。。。。。。。

26.*/

27.}

28.}

作者: 杨浩    时间: 2013-2-2 16:08
抽象类有构造函数,而接口没有。
但是即便抽象类有构造函数,依然不能new对象。
因为抽象类本身就是由一些事物共性的属性中抽取出的一个抽象体,它不能直接有实体对象。
接口里面只能有抽象方法,它是给事物功能做扩展的,概念上理解,就不应该有实例对象吧?
Java不是死规定什么的,他还是很讲道理滴,就像张老师讲的,你觉得这个地方,按理应该是这样么,那就是这样咯。
构造方法不能被继承的,只是子类在new对象的时候,会调用父类的构造方法,你看,一个抽象类被继承了,那么它的子类在创建对象的时候,会去调用它的构造函数,那么它不得有么?如果没,那这个抽象类的成员变量怎么办?怎么初始化?子类不要了么
至于JVM怎么识别的。。。那我就不知道咯,只能去查资料咯,不管胡说
作者: Gaara    时间: 2013-2-2 16:18
我说下我的看法  我觉得这还是因为JAVA是面向对象来决定的。所有的对象都是通过类来描绘的(就是毕老师说的图纸),但并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类的目的不是用来实例化的,是用来继承的。必须依靠子类来实例化,创建对象。

如果实在要说一个原因我认为就是这是属于java开发的一种规范。也就是规定的(我是这么理解的)
希望能帮到你




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2