程序集和类的类实例化(“新”)问题[重复]
Posted
技术标签:
【中文标题】程序集和类的类实例化(“新”)问题[重复]【英文标题】:Class instantiation ("new") problems with assemblies and classes [duplicate] 【发布时间】:2020-04-18 22:23:19 【问题描述】:我正在做一个项目,该项目要求我只通过它自己的程序集实例化(“新”)一个类,而不是其他程序集。这可能吗?
我尝试使用抽象,但这意味着我无法在任何地方实例化它。
示例: 以下类在同一个项目/程序集中。
public class Banana
public Banana()
...
public class Food.
public static Banana InstantiateBanana()
Banana banana = new Banana();//<=====How can you instantiate it inside the same assembly? I don't want other assemblies to instantiate it.
...
return banana;
【问题讨论】:
删除抽象并使实例化方法静态。 您在寻找protected
成员访问修饰符吗?也许看看Accessibility Levels?
感谢您这么快回复! :) 我编辑了代码,但它仍然没有工作...... :(
@MinijacksaysreinstateMonica 我应该在哪里使用受保护的修饰符?继承类不受保护吗?
当您说“其他程序集”时,您究竟是什么意思?如果您将构造函数设为私有,但保持其他所有内容不变,则没有其他内容可以在香蕉上调用 new,但仍然可以通过实例化方法创建一个。
【参考方案1】:
我想通了!
public class Banana
private Banana()
...
public static Banana InstantiateBanana()
Banana banana = new Banana();//<=====How can you instantiate it inside this class? I don't want other assemblies to instantiate it.
...
return banana;
这应该可行。仅在其自己的类中实例化 Banana 类,而不是在其他类中。我只需要一个私有构造函数和一个静态方法来实例化。
【讨论】:
以上是关于程序集和类的类实例化(“新”)问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章
类和对象(类和类的实例化,this,static关键字,封装)