标签: interface

为什么接口不能指定静态方法?

我知道这个问题一直被问到,但我似乎无法找到足够好的答案.所以为了弄清楚我想知道的是什么,我将把它分成两个问题:

  1. 为什么接口不能有静态方法签名?我将尝试抢占非答案,询问为什么在世界上我想用以下内容执行此操作:我希望能够静态调用GetDbConnectionType()on SqliteCodeGenerator和MssqlCodeGenerator:

    interface ICodeGenerator
    {
        // this is the method I would like to be static:
        string GetDbConnectionType();
    }
    
    abstract class CodeGeneratorBase : ICodeGenerator
    {
        public abstract string GetDbConnectionType();
    
        public void GenerateSomeCode(StringBuilder s)
        {
            s.AppendLine("var foo = new " + GetDbConnectionType() + "();");
        }
    }
    
    class SqliteCodeGenerator : CodeGeneratorBase
    {
        public override string GetDbConnectionType()
        {
            return "SQLiteConnection";
        }
    }
    
    class MssqlCodeGenerator : CodeGeneratorBase
    {
        public override string GetDbConnectionType()
        {
            return "SqlConnection";
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 另一方面,这是第二个问题的问题,如果你知道一个很好的替代方案来实现上述目标,那么无论如何......

c# static interface

42
推荐指数
2
解决办法
4万
查看次数

Java中接口的重要性

假设我们有两个类, Tiger并且Aeroplane.这两种类型的一个共同点是速度.我知道,这将是不合逻辑创建一个超类ClassWithSpeed,然后派生子类Aeroplane,并Tiger从它.相反,它是最好创建一个包含方法的接口speed(),然后实现它Aeroplane和Tiger.我明白了.但是,如果没有接口,我们可以做同样的事情.我们可以定义方法speed()中Aeroplane和方法speed()的Tiger.唯一(也许是非常大的)缺陷是我们无法"到达" 接口引用的对象Tiger并Aeroplane通过接口引用.

我是Java和OOP的初学者,如果有人向我解释接口的作用,我将非常感激.干杯!

java interface

42
推荐指数
4
解决办法
1万
查看次数

无法创建抽象类或接口的实例

我有一个类和一个接口,当我尝试实例化接口时,我收到一个错误:

无法创建抽象类或接口的实例

我的代码如下:

namespace MyNamespace
{
    public interface IUser
    {
        int Property1 { get; set; }
        string Property2 { get; set; }
        string Property3 { get; set; }
        void GetUser();
    }

    public class User : IUser
    {
        public int Property1 { get; set; }
        public string Property2 { get; set; }
        public string Property3 { get; set; }

        public void GetUser()
        {
           //some logic here...... 
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试实例化时,IUser user = new IUser();我收到一个错误:

无法创建抽象类或接口的实例

我在这做错了什么?

c# oop interface class instantiation

41
推荐指数
4
解决办法
13万
查看次数

我们可以在抽象类中使用静态方法吗?

在Java编程中,我们可以调用抽象类的静态方法吗?
是的我知道我们不能将静态与抽象类的方法一起使用.但我想知道为什么..?

java static interface abstract

41
推荐指数
4
解决办法
8万
查看次数

对于Java接口中的常量,"public static final"是多余的吗?

这段代码:

interface Config {
    int MAX_CONN = 20;
}
Run Code Online (Sandbox Code Playgroud)

编译和按我的预期工作.它看起来像是:

interface Config {
    public static final int MAX_CONN = 20;
}
Run Code Online (Sandbox Code Playgroud)

对于Java接口中的常量,"public static final"是多余的吗?这对于Java 1.1,1.2,1.3,1.4,...,1.8是否适用,或者是否在Java版本中进行了更改?

java static final interface jls

41
推荐指数
2
解决办法
3万
查看次数

什么是java中的静态接口?

当我注意到它是一个"静态"界面时,我正在阅读Map.Entry界面.我不太了解静态接口是什么,它与常规接口有什么不同?

public static interface Map.Entry<K,V>

这是界面的定义.文档:http://docs.oracle.com/javase/6/docs/api/java/util/Map.Entry.html

java interface

40
推荐指数
1
解决办法
4万
查看次数

接口类型不能静态分配?

我试着把它放在我的视图对象的头文件中:

@property (nonatomic) UIColor color;
Run Code Online (Sandbox Code Playgroud)

存储应在此视图中绘制线条的颜色.

Xcode在这一行上给出了一个错误:

接口类型不能静态分配

这是什么意思,我该怎么办?

编辑:

我确实添加了*,在合成时,它说:

ARC禁止使用未指定的所有权或存储属性合成Objective C对象的属性?

xcode memory-management compiler-errors interface objective-c

40
推荐指数
3
解决办法
3万
查看次数

在.Net 4.0中可以使用实现IQueryable <T>的实例化类型?

在.Net 4.0上的C#的上下文中,是否有任何内置对象可以实现IQueryable<T>?

linq types interface iqueryable c#-4.0

40
推荐指数
1
解决办法
2万
查看次数

Typescript - 带接口的类的默认参数

我有一个场景,我有一个接口,有一个像这样的方法:

interface SomeInterface
{
   SomeMethod(arg1: string, arg2: string, arg3: boolean);
}
Run Code Online (Sandbox Code Playgroud)

像这样的一个类:

class SomeImplementation implements SomeInterface
{
   public SomeMethod(arg1: string, arg2: string, arg3: boolean = true){...}
}
Run Code Online (Sandbox Code Playgroud)

现在问题是我似乎无法告诉接口第3个选项应该是可选的还是有一个默认值,就像我试图告诉接口有一个默认值我得到错误:

TS2174: Default arguments are not allowed in an overload parameter.

如果我从界面中省略默认值并像这样调用它:

var myObject = new SomeImplementation();
myObject.SomeMethod("foo", "bar");
Run Code Online (Sandbox Code Playgroud)

它抱怨参数与任何覆盖都不匹配.那么是否有一种方法可以为参数提供默认值并从接口继承,我不介意接口是否必须将值作为默认值,因为它始终是一个可选参数.

arguments interface default-value typescript

40
推荐指数
1
解决办法
3万
查看次数

如何将EC2实例移动到其他子网?

我在AWS中设置了VPC.我们创建了2个子网(A/24和B/24),直接使用所有没有IP /子网的IP进行进一步使用.

我们发现b/24没有被完全利用,我们在那里浪费了IP地址.

现在我们要减小子网大小并将实例从B/24移动到A/24.从B/24和/ 28范围创建4个较小的子网,并将服务器移回到创建的较小子网之一.

请告知我们可以应用的建议最佳实践,以便我们能够将我们的可用服务器保留在B/24中并创建多个子网.

networking interface amazon-ec2

40
推荐指数
3
解决办法
6万
查看次数