java创建对象例如,book a = new book(); 其中,第一个book、a、new以及book();分别表示什么含义?如果notebook为book的派生类,那么book a = new notebook()正确么,反过来notebook a = new book()呢?
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/29 00:12:34
java创建对象例如,book a = new book(); 其中,第一个book、a、new以及book();分别表示什么含义?如果notebook为book的派生类,那么book a = new notebook()正确么,反过来notebook a = new book()呢?
java创建对象
例如,book a = new book(); 其中,第一个book、a、new以及book();分别表示什么含义?如果notebook为book的派生类,那么book a = new notebook()正确么,反过来notebook a = new book()呢?
java创建对象例如,book a = new book(); 其中,第一个book、a、new以及book();分别表示什么含义?如果notebook为book的派生类,那么book a = new notebook()正确么,反过来notebook a = new book()呢?
不知道你学过C/C++没有?
book a
表示创建一个指向book类对象的指针/引用.详细来说,a本质上是一个unsigned int变量,但是这个整形变量不储存别的东西,就储存内存地址.并且因为JAVA这种语言的特点,使得系统(虚拟机)自动进行类型检查,保证a变量指向的是book类型或book类子类类型的对象.
new在JAVA里是一个特殊操作符,但是我们的操作系统是用C语言来写的,new必然对应C语言的某个或某组系统函数调用.这里一般是等价于C语言的malloc函数,作用是请求操作系统为对象分配一块内存空间.
book()是构造函数,是在new出来的内存区域填充数据,初始化book类对象的一些变量或状态.
book a=new notebook()可以,父类的指针/引用可以指向子类的对象.(多态)
反过来notebook a = new book()不行.因为对于子类对象,父类所声明的变量是子类对象的空间的一部分,这意味着父类对象的所占内存空间大小不超过子类对象的大小.所以,不可能让子类指针指向父类对象,否则会指向一块未被分配的内存空间,导致出错.