实例化一个类的实质是什么?

net_java_ja 2007-06-28 09:40:54
实例化一个类的实质是什么?需不需要好用内存?
譬如我现在一个类A中有N个方法,其中每个方法都要用到类B,那么我现在是定义一个整体变量:protected B __b = new B();然后在类A的每个方法中用这个__b;
还是在类A中的每一个方法中都实例一次(如果有10个方法就实例化10次)

请问哪一种方法效率更高一些啊?
...全文
787 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoliangwh 2007-06-29
  • 打赏
  • 举报
回复
up
PCI_E 2007-06-29
  • 打赏
  • 举报
回复
所谓实例化,其实就是产生一个对象,然后为对象初始化一些东西。比如student s1=new student();student()这是一个student 一个默认的构造函数,用户初始化student 对象。
其本质就是在内存中为这个将要使用的对象分配一块内存空间。
xamcsdn2 2007-06-29
  • 打赏
  • 举报
回复
实例化是耗资源的,能少实例就少实例。
net_java_ja 2007-06-29
  • 打赏
  • 举报
回复
按照楼上的采用使用单件类,算不算是面向对象的啊?

还有你们各说一词,如果那我开始举的那个例子,到底最合使、性能最好的方法是怎么做?
rageliu 2007-06-29
  • 打赏
  • 举报
回复
所谓实例化,其实就是给变量分配内存空间。

如果使用new,就是在堆上分配,比较灵活,当相对耗时。而使用临时变量的方式,灵活性稍差,但其通过EBP基址方式访问速度上比较快
  • 打赏
  • 举报
回复
能不能以我上面这个例子,说说你的........
————————————————————————————————————————
首先我要看到你描述的需求是面向对象的呀。你根本没有对领域对象进行描述的需求,又怎么可能面向对象设计?你的描述中对对象的自身结构关系、扩展性有明确描述吗?你只是在描述“函数a调用函数b”之类的。
net_java_ja 2007-06-28
  • 打赏
  • 举报
回复
能不能以我上面这个例子,说说你的“面向对象语言中的软件设计法”是怎样设计的啊?优点是什么?

非常感谢
Jinglecat 2007-06-28
  • 打赏
  • 举报
回复
唉,这个问题, 我真的不知道怎么叙述,继续看书去
net_java_ja 2007-06-28
  • 打赏
  • 举报
回复
那请问楼上的“面向对象语言中的软件设计法”是怎样设计的啊?
jimu8130 2007-06-28
  • 打赏
  • 举报
回复
你可以考虑使用单件类的思想
http://terrylee.cnblogs.com/archive/2005/12/09/293509.html
kkun_3yue3 2007-06-28
  • 打赏
  • 举报
回复
每次new都会新开辟内存来存放

你可以定义一个未赋值的B,在类A的默认构造方法里NEW,
  • 打赏
  • 举报
回复
如果是纯粹函数库用法,那么你的类型A和B都应该是static的,当然这也就要求里边所有字段、属性、方法全都是static的。
  • 打赏
  • 举报
回复
完全是在构造函数库,就像c语言中的做法,不是面向对象语言中的软件设计法。
nyzfl 2007-06-28
  • 打赏
  • 举报
回复
看你需求,如果你在一个地方用完b之后,暂时不用了,或者不确定什么时候用,应该实例华一个对象,这样离开之后就会销毁对象。

静态的,始终占用内存


孙晓军82 2007-06-28
  • 打赏
  • 举报
回复
protected B __b = new B();然后在类A的每个方法中用这个__b;
这个效率高,初始化类是很耗时的,尤其是有好多父类的那种.
net_java_ja 2007-06-28
  • 打赏
  • 举报
回复
请问楼上的,如果用静态模式是不是比我这里的做法更好效率更高?

谢谢
lnwuyaowei 2007-06-28
  • 打赏
  • 举报
回复
楼主的作法并不能只NEW了一个整体对象B。
如果想只应用一个B,应当用静态类,或者是单件模式
flashlove2008 2007-06-28
  • 打赏
  • 举报
回复
C#高级编程的书中专门讲到了内存管理!
CLR支持两种基本类型:值类型和引用类型
值类型是存储在堆栈上的
引用类型是存储在堆上的
真相重于对错 2007-06-28
  • 打赏
  • 举报
回复
差不多
net_java_ja 2007-06-28
  • 打赏
  • 举报
回复
我这样做不行吗?
类B:
class B
{
public void b1(){} //方法1
public void b2(){} //方法2
public void b3(){} //方法3
......
}

类A:
class A
{
protected B _b = new B();

protected void a1()
{
b.b1();
..........
}

protected void a2()
{
b.b2();
..........
}

protected void a3()
{
b.b3();
..........
}

.........
}

请问这样是不是最佳使用方法?只new了一个整体的对象b,而不用在类A中的每个方法中都new一个局部变量

62,241

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧