标签: interface

使用相同的方法在类中实现两个接口.覆盖哪种接口方法?

两个具有相同方法名称和签名的接口.但是由单个类实现,那么编译器将如何识别哪个接口的方法是什么?

例如:

interface A{
  int f();
}

interface B{
  int f();
}

class Test implements A, B{   
  public static void main(String... args) throws Exception{   

  }

  @Override
  public int f() {  // from which interface A or B
    return 0;
  }
}   
Run Code Online (Sandbox Code Playgroud)

java overriding interface

223
推荐指数
6
解决办法
14万
查看次数

PHP中的接口有什么意义?

接口允许您创建代码,该代码定义实现它的类的方法.但是,您无法向这些方法添加任何代码.

抽象类允许您执行相同的操作,同时向方法添加代码.

现在,如果您可以使用抽象类实现相同的目标,为什么我们甚至需要接口的概念?

我被告知它与OO理论有关,从C++到Java,这就是PHP的OO基础.这个概念在Java中有用但在PHP中没有用吗?它只是一种避免在抽象类中乱丢占位符的方法吗?我错过了什么吗?

php theory oop interface

219
推荐指数
11
解决办法
9万
查看次数

为什么C#接口不能包含字段?

例如,假设我想要一个ICar接口,并且所有实现都将包含该字段Year.这是否意味着每个实现都必须单独声明Year?简单地在界面中定义它不是更好吗?

c# interface

217
推荐指数
8
解决办法
14万
查看次数

在Java中显式调用默认方法

Java 8引入了默认方法,以提供扩展接口的能力,而无需修改现有实现.

我想知道,当该方法被覆盖或由于不同接口中的冲突默认实现不可用时,是否可以显式调用方法的默认实现.

interface A {
    default void foo() {
        System.out.println("A.foo");
    }
}

class B implements A {
    @Override
    public void foo() {
        System.out.println("B.foo");
    }
    public void afoo() {
        // how to invoke A.foo() here?
    }
}
Run Code Online (Sandbox Code Playgroud)

考虑到上面的代码,你会如何A.foo()从B类方法调用?

java inheritance interface java-8 default-method

217
推荐指数
4
解决办法
5万
查看次数

C#中的多重继承

由于多重继承是不好的(它使源更复杂),C#不直接提供这样的模式.但有时候拥有这种能力会有所帮助.

例如,我能够使用接口和三个类来实现缺少的多继承模式:

public interface IFirst { void FirstMethod(); }
public interface ISecond { void SecondMethod(); }

public class First:IFirst 
{ 
    public void FirstMethod() { Console.WriteLine("First"); } 
}

public class Second:ISecond 
{ 
    public void SecondMethod() { Console.WriteLine("Second"); } 
}

public class FirstAndSecond: IFirst, ISecond
{
    First first = new First();
    Second second = new Second();
    public void FirstMethod() { first.FirstMethod(); }
    public void SecondMethod() { second.SecondMethod(); }
}
Run Code Online (Sandbox Code Playgroud)

每次我向其中一个接口添加方法时,我都需要更改类FirstAndSecond.

有没有办法将多个现有类注入一个新类,就像在C++中一样?

也许有一种使用某种代码生成的解决方案?

或者它可能看起来像这样(假想的c#语法):

public class FirstAndSecond: IFirst from First, ISecond …
Run Code Online (Sandbox Code Playgroud)

c# interface multiple-inheritance

207
推荐指数
5
解决办法
37万
查看次数

如何在Java中找到给定类的所有子类?

如何在Java中尝试查找给定类(或给定接口的所有实现者)的所有子类?截至目前,我有一种方法可以做到这一点,但我觉得效率很低(至少可以说).方法是:

  1. 获取类路径上存在的所有类名的列表
  2. 加载每个类并测试它是否是所需类或接口的子类或实现者

在Eclipse中,有一个很好的功能叫做类型层次结构,可以非常有效地显示它.如何以编程方式进行操作?

java interface class subclass

194
推荐指数
9
解决办法
12万
查看次数

Java抽象接口

考虑一个例子(在java中编译)

public abstract interface Interface {
    public void interfacing();
    public abstract boolean interfacing(boolean really);
}
Run Code Online (Sandbox Code Playgroud)

为什么接口被"声明"抽象是必要的?是否有适用于抽象接口的其他规则?


最后:如果abstract已经过时,为什么它包含在Java中?抽象界面有历史吗?

java interface abstract

194
推荐指数
4
解决办法
10万
查看次数

我怎么知道何时创建界面?

我正处于开发学习的某个阶段,我觉得我必须更多地了解接口.

我经常阅读它们,但似乎我无法掌握它们.

我已经阅读过这样的例子:动物基类,IAnimal界面,如'Walk','Run','GetLegs'等等 - 但我从来没有做过某些事情,感觉就像"嘿我应该使用界面这里!"

我错过了什么?为什么我要掌握这么难的概念!我只是因为我可能没有意识到对一个人的具体需求而感到害怕 - 主要是由于理解它们的一些缺失方面!这让我觉得自己在成为开发者方面缺少一些东西!如果有人有过这样的经历并取得了突破,我会很感激如何理解这个概念.谢谢.

oop design-patterns class-design interface

191
推荐指数
12
解决办法
2万
查看次数

接口方法中的最终参数 - 重点是什么?

在Java中,final在接口方法中定义参数并且不遵循实现类中的参数是完全合法的,例如:

public interface Foo {
    public void foo(int bar, final int baz);
}

public class FooImpl implements Foo {

    @Override
    public void foo(final int bar, int baz) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,bar并且在类VS的接口中baz有相反的final定义.

以同样的方式,final当一个类方法扩展另一个类时,不会强制执行任何限制abstract.

虽然final在类方法体内有一些实用价值,但是有没有指定final接口方法参数的点?

java methods final interface class

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

自定义字体和XML布局(Android)

我正在尝试使用Android中的XML文件定义GUI布局.据我所知,没有办法指定您的小部件应该在XML文件中使用自定义字体(例如,您放置在assets/font /中的字体),并且您只能使用系统安装的字体.

我知道,在Java代码中,我可以使用唯一ID手动更改每个窗口小部件的字体.或者,我可以迭代Java中的所有小部件来进行此更改,但这可能会非常慢.

我还有其他选择吗?有没有更好的方法来制作具有自定义外观的小部件?我不是特别想要为我添加的每个新小部件手动更改字体.

java user-interface fonts android interface

174
推荐指数
9
解决办法
17万
查看次数