标签: interface

接口与抽象类

在C#中,何时应该使用接口,何时应该使用抽象类?决定因素是什么?

c# inheritance abstract-class interface

120
推荐指数
4
解决办法
15万
查看次数

为什么实现接口的抽象类可能会错过接口方法之一的声明/实现?

当您使用抽象类来实现接口时,Java中会发生奇怪的事情:某些接口的方法可能完全丢失(即既不存在抽象声明也不存在实际实现),但编译器不会抱怨.

例如,给定接口:

public interface IAnything {
  void m1();
  void m2();
  void m3();
}
Run Code Online (Sandbox Code Playgroud)

以下抽象类在没有警告或错误的情况下快速编译:

public abstract class AbstractThing implements IAnything {
  public void m1() {}
  public void m3() {}
}
Run Code Online (Sandbox Code Playgroud)

你能解释一下原因吗?

java abstract-class interface

119
推荐指数
4
解决办法
12万
查看次数

评论界面,实现或两者?

我想我们所有人(当我们可以被打扰时!)评论我们的界面.例如

/// <summary>
/// Foo Interface
/// </summary>
public interface Foo
{
    /// <summary>
    /// Will 'bar'
    /// </summary>
    /// <param name="wibble">Wibble factor</param>
    void Bar(string wibble);
}
Run Code Online (Sandbox Code Playgroud)

您是否也评论实施(也可能提供给客户,例如作为图书馆的一部分)?如果是这样,你如何管理保持两者同步?或者您只是添加"查看文档界面"评论?

谢谢

c# java comments interface

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

"程序接口,而非实现"是什么意思?

在阅读有关设计模式时,人们会发现这句话.

但是我不明白,有人可以帮我解释一下吗?

oop ooad design-patterns interface software-design

119
推荐指数
6
解决办法
4万
查看次数

Java8:为什么禁止从java.lang.Object为方法定义默认方法

默认方法是我们的​​Java工具箱中一个不错的新工具.但是,我尝试编写一个定义defaulttoString方法版本的接口.Java告诉我这是禁止的,因为声明的方法java.lang.Object可能不会被default编辑.为什么会这样?

我知道存在"基类永远胜利"规则,因此默认情况下(pun;),方法的任何default实现Object都会被方法覆盖Object.但是,我认为没有理由说明Object规范中的方法不应该有例外.特别是对于toString具有默认实现可能非常有用.

那么,Java设计者决定不允许default方法覆盖方法的原因是什么Object

java interface java-8 default-method

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

为什么明确实现接口?

那么,明确实现接口的一个好用例究竟是什么?

是否仅仅是因为使用该类的人不必在intellisense中查看所有这些方法/属性?

c# interface

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

扩展方法可以应用于接口吗?

是否可以将扩展方法应用于接口?(C#问题)

例如,这是为了实现以下目标:

  1. 创建ITopology界面

  2. 为此接口创建扩展方法(例如public static int CountNodes(this ITopology topologyIf))

  3. 然后在创建实现ITopology的类(例如MyGraph)时,它会自动拥有Count Nodes扩展.

这样,实现接口的类就不必具有与扩展方法中定义的类对齐的set类名.

.net c# extension-methods interface

115
推荐指数
1
解决办法
5万
查看次数

如何检查对象是否实现了接口?

如何检查某个类是否实现了接口?当有:

Character.Gorgon gor = new Character.Gorgon();

如何检查gor实现Monster接口?

public interface Monster {

    public int getLevel();

    public int level = 1;
}

public class Character {
    public static class Gorgon extends Character implements Monster {
        public int level;
        @Override
        public int getLevel() { return level; }

        public Gorgon() {
            type = "Gorgon";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该方法是否getLevel()Gorgon正确覆盖,因此它可以返回levelgor创建的?

java oop interface

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

接口常量有什么用?

我正在学习Java,并且发现接口可以有字段,这些字段是public static和final.到目前为止,我还没有看到这些例子.这些接口常量的一些用例有哪些,我可以在Java标准库中看到一些吗?

java interface constants

114
推荐指数
4
解决办法
7万
查看次数

Java接口中的可选方法

根据我的理解,如果在java中实现接口,则该接口中指定的方法必须由实现所述接口的子类使用.

我注意到在某些接口(如Collection接口)中有一些方法被注释为可选,但这究竟是什么意思?它抛出了我一点,因为我认为接口中指定的所有方法都是必需的?

java methods interface

110
推荐指数
8
解决办法
7万
查看次数