在Java中,您可以创建仅包含抽象方法的抽象类.另一方面,您可以创建一个声明相同方法的接口.既然如此,你可以使用抽象类而不是接口吗?
可能重复:
何时使用接口而不是抽象类,反之亦然?
嗨,我正在向非程序员教授OOP概念.我想知道如何解释接口和抽象类之间的区别.
我实际上正在寻找的,是一个真实世界的例子,可以帮助突出两者之间的差异.
我从不同的文章中学习了Bridge模式,并且按照我的理解实现了它.令我困惑的一件事是桥模式说
BridgePattern将抽象与其实现分离,以便两者可以独立变化
这个陈述的含义是什么?实现是在单独的jar中吗?
什么是独立声明的含义?
考虑提供的journaldev文章,详细说明答案.
任何帮助是极大的赞赏.
任何人都可以告诉我完全抽象的类和接口之间究竟有什么区别?
Abstract类也可以将其所有方法都抽象化.接口的所有方法都是抽象的.在这种情况下,两者之间的主要区别是什么?
如果纯抽象类和接口之间有区别?界面有什么用?在使用接口的地方,我们可以使用纯抽象类?
任何人都可以用命令模式的简单例子来解释.我在互联网上提到但我很困惑.
在定义结构并继承Interface和/或Abstract Class时,哪一个是最佳实践?为什么?这里有两个例子:
以下是[Interface] - > [Abstract Class] - > [Class]的示例
Interface DataInterface
{
public function __construct($connection);
public function connected();
public function get();
}
Abstract class BaseData implements DataInterface
{
protected $connection;
public function __construct($connection)
{
$this->connection = $connection;
}
}
class UserData extends BaseData
{
public function exists()
{
return is_connected($this->connection);
}
public function get()
{
return get_data($this->connection);
}
}
$oUserData = new UserData(new Connection());
Run Code Online (Sandbox Code Playgroud)
这里是没有接口的[Abstract Class] - > [Class]的示例
Abstract class BaseData
{
protected $connection;
public function __construct($connection)
{ …Run Code Online (Sandbox Code Playgroud) 大家好,
我只是在思考抽象类和接口,我知道它们在技术上是如何工作的,但我不了解抽象类和接口的实际用途.我的意思是,当我们知道无法创建它的对象时,为什么我们应该使用抽象类,我们不得不扩展这个类来使用它,所以为什么我们不把所有东西都放在派生类中.
接口也是如此,我们必须实现接口,所以为什么我们不把接口中定义的所有方法都放在我们实现接口的类中.
有人可以用一些例子清楚我的怀疑吗?
有时我想知道我们确实有接口和抽象类,原因有两个:
如果您只是为了设计目的而需要多个实现,并且在开发时需要编写代码,那么接口是我们获得的最佳选择.
如果你想重用代码,那么我们可能会去抽象类.
但是,我看到的东西都不是.
在某些设计中,它就像这个Interface > BaseClass > Child类.
基本上,基类实现所有方法,然后子类从中继承定义.为什么我们不能使用抽象类而不是这个设置?或者这是一个有缺陷的设置?
我有
public interface MyInterface
{
void Execute();
}
Run Code Online (Sandbox Code Playgroud)
和
public abstract class MyAbstractClass
{
public abstract void Execute();
}
Run Code Online (Sandbox Code Playgroud)
现在,当一个类实现它们时,抽象类和接口之间的区别是什么?当抽象类只有一个抽象方法时,何时以及什么是类实现它们的原因?
昨天在接受采访时我问过这个问题.我没有回答..
提前致谢