Class1 o = new Class1();和 Class1 o = new test(num,num1);

Class1 o = new Class1();和 Class1 o = new test(num,num1);
悬赏分:5 - 解决时间:2008-9-12 16:31
new的用法问题:这两段代码到底TMD什么意思?
提问者: hxx891207 - 助理 三级 最佳答案
第一个是在没有参数的情况下创建了一个Class1实体
第二个是相当于在test类中传入两个值(就是num和num1)然后返回一个Class1的实体

上边的问题解决了,然后我要问的是 Class1 o = new Class1();和 Class1 o = new test(num,num1);
之中的 Class1 o 是什么意思?我很笨,麻烦废话多点没关系,解释的正确了就给分.合乎我意的话追加分数

1 你说的解决了是什么意思?是你同意
第一个是在没有参数的情况下创建了一个Class1实体
第二个是相当于在test类中传入两个值(就是num和num1)然后返回一个Class1的实体

这个答案?
对这个答案我敢苟同 1 创建一个class1实体. 这种说法不严谨,应该说 对象. 实体 这个词已经有对应的意义.
2 在test中传入两个值返回一个class1 实体??? 他这样是把test当作一个方法了 但是 方法能够new 定义么? 在隐藏基类方法里面有这种写法,但是 从你的这个上下文来不是在继承类.
我的答案:1 class1 o=new Class1() 这个是基本的语法.实例化一个类.或者说 创建类class的一个对象.
2 class1 o =new test(num1,num2) 是面向对象里面的 多态性的一个表现. Test类 可能是class1的子类(或者说继承类),因此 可以把这个对象赋值给他的父类 也就是 class1. Test类的构造函数需要传入两个值. 就这么简单
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-09-13
听过里氏替换原则吗?子类是可以替换父类的,也就是如果某一个类派生出的子类,而这个子类是可以替换其父类的。

你上面的问题,第一个是实例化一个Class1类的对象!

第二个,从这里可以看出Class1是一个子类而其父类是test。所以根据里氏替换原则,Class1是可以替换test的。而test父类有个带参的构造方法参数是num,num1。所以实例化的时候需要传入两个参数。
第2个回答  2008-09-13
Class1 o 中 Class1 是类的名字 o是Class1 类型的“变量”就如同 int a 一样 目前可以先这样理解 哈哈 (o 可以随便写 如 写成a 也可以);
new Class1() 就是把Class1类给实例化了 ~~
第3个回答  2008-09-13
同意楼上看法
Class1 o是声明一个Class1类的对象
而test应该是Class1的子孙类