java - 如何制作只能通过接口(interface)访问的类?

标签 java c# oop interface

在 C# 或 Java 中,如何创建一个只能使用其实现的接口(interface)实例化的类?

很抱歉,如果之前有人问过这个问题。

编辑:抱歉让您感到困惑,这个问题只是出于好奇而问的:

例如我有:

interface iA
{
  int addNum();
}

interface iB
{
  int minusNum();
}

class A implements iA, iB
{
  private int A;
  public int addNum()
  {
    A += 10;
    return A;
  }

  public int minusNum()
  {
    A -= 10;
    return A;
  }
}

class TestIface
{
  public static void main(String args[]) {
    A testA = new A();
    iA testiA = new A();
    iB testiB = new A();

    testA.minusNum(); // No error, it has access to both methods
    testA.addNum();

    testiA.minusNum();//ERROR
    testiA.addNum();

    testiB.minusNum();
    testiB.addNum();//ERROR
  }
}

我想知道是否有一种方法可以阻止开发人员只创建 testA 并访问这两个方法。

最佳答案

如何将构造函数设为私有(private)?

class A implements iA
{
  public int returnNum()
  {
    return 10;
  }
  private A(){}

  public static iA getInstance(){
    return new A();
  }

}

关于java - 如何制作只能通过接口(interface)访问的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25825028/

相关文章:

java - Main.java:70:错误:预期为“.class”。 w

c# - 带有部分 CRUD 的 MVC 5 BeginCollectionItem

java - 难以理解通过接口(interface)实现的松散耦合

具有使用不同参数的构造函数的 Java 简单工厂

c - 在不使用函数指针的情况下替代在 C 中引用虚拟表。

java - 当 IOException 通常发生时,我应该采取什么措施来正确处理它?

java - ElasticSearch 端口 9300 连接被拒绝

c# - 我正在寻找 .NET 的实际功能 Web 浏览器控件,也许是 C++ 库

java - 运行读取Elasticsearch的map-reduce作业时出错

c# - 是否有任何工具可以报告注释掉的 .NET 代码?