相关疑难解决方法(0)

抽象类与接口与mixins

有人可以向我解释抽象类,接口mixins之间的区别吗?我之前在我的代码中使用了每个,但我不知道技术差异.

oop abstract-class terminology interface mixins

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

Java 8中的抽象类和接口有什么区别?

在Java中,抽象类和接口之间曾经存在微妙但重要的区别:默认实现.抽象类可以拥有它们,接口却不能.Java 8虽然引入了接口的默认实现,但这意味着这不再是接口和抽象类之间的关键区别.

那是什么?

尽我所知,唯一剩下的差异(除了可能是引擎效率之外的东西)是抽象类遵循传统的Java单继承,而接口可以有多重继承(或者如果你愿意,可以有多个实现).这引出了另一个问题 -

新的Java 8接口如何避免钻石问题

java abstract-class interface diamond-problem java-8

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

为什么要使用接口,多重继承与接口,接口的好处?

我对这件事情仍然有些困惑.我到现在所发现的是

(这里已经提出了类似的问题,但我还有其他一些观点.)

  1. 接口是仅抽象方法和最终字段的集合.

  2. Java中没有多重继承.

  3. 接口可用于在Java中实现多重继承.

  4. 继承的一个优点是我们可以在派生类中使用基类代码而无需再次编写它.可能这是继承在那里最重要的事情.

现在..

Q1.由于接口只有抽象方法(没有代码)所以我们怎么说如果我们实现任何接口那么它是继承?我们没有使用它的代码.

Q2.如果实现接口不是继承,那么如何使用接口来实现多重继承?

Q3.无论如何使用Interfaces有什么好处?他们没有任何代码.我们需要在我们实现它的所有类中反复编写代码.

那么为什么要制作接口呢?

注意:我找到了一个接口有用的案例.它的一个例子就像在Runnable接口中我们有public void run()方法,我们在其中定义线程的功能,并且内置编码,该方法将作为单独的线程运行.所以我们只需要编写线程中的代码,Rest是预定义的.但是这个东西也可以用抽象类和所有东西来实现.

那么使用接口的确切好处是什么?我们使用Interfaces实现了多重继承吗?

java oop inheritance interface multiple-inheritance

63
推荐指数
6
解决办法
5万
查看次数

何时使用装饰器模式?

我正在研究我的设计模式,我在编码中尚未认真使用的一种模式是装饰模式.

我理解这种模式,但我想知道的是现实世界中一些具体的例子,装饰者模式是最佳/最佳/优雅的解决方案.需要装饰器模式的特定情况非常方便.

谢谢.

design-patterns decorator

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

我什么时候应该在java中使用接口?

准确地在Java中使用接口的一个很好的例子将是理想的,并且适用于任何特定的规则.

java interface

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

何时使用接口或抽象类?何时使用?

虽然某些指导原则指出,当你想为继承不是明确的类定义合同时应该使用接口(IDomesticated),当类是另一个(Cat : Mammal,Snake : Reptile)的扩展时继承,有些情况(在我看来)这些准则进入灰色地带.

例如,说我的实施是Cat : Pet.Pet是一个抽象类.应该说是扩大到Cat : Mammal, IDomesticated那里Mammal是一个抽象类,IDomesticated是接口?或者我是否与KISS/YAGNI原则相冲突(尽管我不确定Wolf将来是否会有一个课程,但是无法继承Pet)?

远离隐喻Cats和Pets,假设我有一些表示传入数据源的类.他们都需要以某种方式实现相同的基础.我可以在抽象Source类中实现一些通用代码并从中继承.我也可以创建一个ISource接口(对我来说感觉更"正确")并在每个类中重新实现通用代码(这不太直观).最后,通过制作抽象类和界面,我可以"吃蛋糕并吃掉它".什么是最好的?

这两种情况提出了仅使用抽象类,只使用接口并同时使用抽象类和接口的要点.这些都是有效的选择,还是存在"规则",以便何时应该使用另一个?


我想通过"同时使用抽象类和接口"来澄清,当它们基本上表示相同的事物(Source并且ISource两者都具有相同的成员)时,包括这种情况,但是类在接口指定合同时添加了通用功能.

另外值得注意的是,这个问题主要针对不支持多重继承的语言(例如.NET和Java).

oop abstract-class interface

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

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

桥接模式是否将抽象与实现分离?

我从不同的文章中学习了Bridge模式,并且按照我的理解实现了它.令我困惑的一件事是桥模式说

BridgePattern将抽象与其实现分离,以便两者可以独立变化

这个陈述的含义是什么?实现是在单独的jar中吗?

什么是独立声明的含义?

考虑提供的journaldev文章,详细说明答案.

任何帮助是极大的赞赏.

java abstraction design-patterns bridge

18
推荐指数
2
解决办法
1757
查看次数

为什么在抽象类存在时我们需要接口?

一位采访者问我以下问题,我无法回答:

当抽象类存在时,为什么我们需要接口?

无论我们在接口中编写什么方法,我们也可以在Abstract类中编写.那为什么我们需要单独的接口呢?

谁能告诉你原因是什么?

预感谢...

c#

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

Java在实现具有较弱访问权限的接口方法时出错

当我编译这段代码时:

interface Rideable {
    String getGait();
}

public class Camel implements Rideable {
    int x = 2;

    public static void main(String[] args) {
        new Camel().go(8);
    }

    void go(int speed) {
        System.out.println((++speed * x++) 
        + this.getGait());
    }

    String getGait() {
        return " mph, lope";
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Camel.java:13: error: getGait() in Camel cannot implement getGait() in Rideable
String getGait() {
       ^
  attempting to assign weaker access privileges; was public
1 error
Run Code Online (Sandbox Code Playgroud)

如何在接口中声明的getGait方法被公开?

java interface

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