标签: interface

接口或抽象类:使用哪一个?

请解释我何时应该使用PHP interface以及何时使用PHP abstract class

我如何才能改变自己abstract class的态度interface

php oop abstract-class interface

316
推荐指数
10
解决办法
11万
查看次数

Java中的接口命名

大多数面向对象的语言都将其接口名称加上大写字母I,为什么Java不这样做呢?不遵守这一惯例的理由是什么?

为了证明我的意思,如果我想要一个用户界面和一个用户实现,我在Java中有两个选择:

  1. Class = User,Interface = UserInterface
  2. Class = UserImpl,Interface = User

在大多数语言中:

Class = User,Interface = IUser

现在,您可能会争辩说,您总是可以为用户实现选择一个最具描述性的名称,但问题就会消失,但Java正在推动POJO方法,而大多数IOC容器都广泛使用DynamicProxies.这两个因素共同意味着您将拥有许多具有单个POJO实现的接口.

所以,我想我的问题归结为:"是否值得遵循更广泛的接口命名约定,特别是考虑到Java框架似乎在哪里?"

java interface naming-conventions

313
推荐指数
9
解决办法
19万
查看次数

java中的接口和@interface有什么区别?

自从90年代末在大学期间使用JBuilder以来我没有触及Java,所以我有点失去联系 - 无论如何我本周一直在研究一个小型Java项目,并使用Intellij IDEA作为我的IDE ,改变我的常规.Net开发速度.

我注意到它支持添加接口和@interfaces,什么是@interface,它与普通接口有什么不同?

public interface Test {
}
Run Code Online (Sandbox Code Playgroud)

public @interface Test {
}
Run Code Online (Sandbox Code Playgroud)

我做了一些搜索,但找不到大量有用的信息引用@interface.

java language-features annotations interface

285
推荐指数
5
解决办法
9万
查看次数

是否应使用或不使用公共访问修饰符声明Java接口中的方法?

是否应使用或不使用public访问修饰符声明Java接口中的方法?

当然,技术上没关系.实现a的类方法interface总是如此public.但什么是更好的惯例?

Java本身并不一致.例如,参见Collectionvs. ComparableFuturevs ScriptEngine..

java coding-style interface public-method

284
推荐指数
8
解决办法
10万
查看次数

269
推荐指数
4
解决办法
19万
查看次数

为什么界面变量默认为静态和最终?

为什么Java中默认接口变量是静态的和最终的?

java interface

258
推荐指数
8
解决办法
34万
查看次数

Java Pass方法作为参数

我正在寻找一种通过引用传递方法的方法.我知道Java不会将方法作为参数传递,但是,我想获得一个替代方案.

我被告知接口是将方法作为参数传递的替代方法,但我不明白接口如何通过引用充当方法.如果我理解正确,接口只是一组未定义的抽象方法.我不希望每次都发送需要定义的接口,因为几种不同的方法可以使用相同的参数调用相同的方法.

我想要完成的是类似的事情:

public void setAllComponents(Component[] myComponentArray, Method myMethod) {
    for (Component leaf : myComponentArray) {
        if (leaf instanceof Container) { //recursive call if Container
            Container node = (Container) leaf;
            setAllComponents(node.getComponents(), myMethod);
        } //end if node
        myMethod(leaf);
    } //end looping through components
}
Run Code Online (Sandbox Code Playgroud)

调用如:

setAllComponents(this.getComponents(), changeColor());
setAllComponents(this.getComponents(), changeSize());
Run Code Online (Sandbox Code Playgroud)

java interface

254
推荐指数
10
解决办法
28万
查看次数

接口 - 有什么意义?

接口的原因真正让我无所适从.根据我的理解,这是一种解决C#中不存在的不存在的多继承的问题(或者我被告知).

我所看到的是,你预先定义了一些成员和函数,然后必须再次在类中重新定义.从而使界面变得多余.它只是感觉像句法...好吧,垃圾对我来说(请不要冒犯意思.垃圾就像无用的东西).

在下面给出的示例中,从堆栈溢出的不同C#接口线程中获取,我只是创建一个名为Pizza而不是接口的基类.

简单示例(取自不同的堆栈溢出贡献)

public interface IPizza
{
    public void Order();
}

public class PepperoniPizza : IPizza
{
    public void Order()
    {
        //Order Pepperoni pizza
    }
}

public class HawaiiPizza : IPizza
{
    public void Order()
    {
        //Order HawaiiPizza
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# interface

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

使用Typescript检查接口类型

这个问题是使用TypeScript直接类比检查Class类型

我需要在运行时找出类型为any的变量实现接口.这是我的代码:

interface A{
    member:string;
}

var a:any={member:"foobar"};

if(a instanceof A) alert(a.member);
Run Code Online (Sandbox Code Playgroud)

如果您在typescript playground中输入此代码,则最后一行将被标记为错误,"当前范围中不存在名称A".但事实并非如此,该名称确实存在于当前范围内.我甚至可以在var a:A={member:"foobar"};没有编辑投诉的情况下将变量声明更改为.浏览网页并在SO上找到另一个问题后,我将界面更改为类,但后来我无法使用对象文字来创建实例.

我想知道A类型是如何消失的,但是看看生成的javascript解释了这个问题:

var a = {
    member: "foobar"
};
if(a instanceof A) {
    alert(a.member);
}
Run Code Online (Sandbox Code Playgroud)

A没有表示作为接口,因此不可能进行运行时类型检查.

我知道javascript作为一种动态语言没有接口的概念.有没有办法输入接口检查?

打字稿操场的自动完成显示打字稿甚至提供了一种方法implements.我怎么用呢?

javascript compiler-construction interface web typescript

244
推荐指数
15
解决办法
19万
查看次数

为什么在Java中使用静态嵌套接口?

我刚刚在代码库中找到了一个静态嵌套接口.

class Foo {
    public static interface Bar {
        /* snip */
    }
    /* snip */
}
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这个.最初的开发者是遥不可及的.因此我不得不问:

静态接口背后的语义是什么?如果我删除了会有什么变化static?为什么有人会这样做?

java static interface

233
推荐指数
5
解决办法
8万
查看次数