接口和抽象类有什么区别

电脑杂谈  发布时间:2020-07-28 09:04:02  来源:网络整理

14类商标和35类区别_抽象类和接口的区别_rgb接口与av接口区别

接口和抽象类有什么区别

选择使用接口和抽象类的基础是什么?

接口和抽象类的概念不同. 接口是动作的抽象,抽象类是根的抽象.

抽象类表示此对象是什么. 该接口表示此对象可以执行的操作. 例如,男人和女人,这两个类(如果它们是类...),则它们的抽象类是人类. 说明他们都是人类.

人们可以吃,狗也可以吃. 您可以将“ eating”定义为接口,然后让这些类实现它.

因此,在高级语言中,一个类只能继承一个类(抽象类)(就像人类不能同时是生物和非生物)一样,但是可以实现多个接口(进食接口,步行接口) ).

总结几句话:

1. 抽象类和接口都不能直接实例化. 如果要实例化,则抽象类变量必须指向实现所有抽象方法的子类对象,而接口变量必须指向实现所有接口方法的类对象.

2. 抽象类必须由子类继承,并且接口必须由类实现.

3. 接口只能用于方法声明. 抽象类可用于方法声明或方法实现.

4. 接口中定义的变量只能是公共静态常量,抽象类中的变量是普通变量.

5. 抽象类中的抽象方法必须全部由子类实现. 如类不能全部实现父类的抽象方法,则子类只能是抽象类. 同样,在实现接口时抽象类和接口的区别,如果无法实现所有接口方法,则该类只能是抽象类.

6. 抽象方法只能声明,而不能实现. 接口是设计的结果,抽象类是重构的结果

rgb接口与av接口区别_抽象类和接口的区别_14类商标和35类区别

7. 抽象类中不能有抽象方法

8. 如果一个类中有抽象方法,则该类只能是一个抽象类

9. 需要实现抽象方法,因此它们不能是静态的或私有的.

10. 接口可以继承接口和多个接口,但是类只能从单个根继承.

1.抽象类 和 接口 都是用来抽象具体对象的. 但是接口的抽象级别最高
2.抽象类可以有具体的方法 和属性,  接口只能有抽象方法和不可变常量
3.抽象类主要用来抽象类别,接口主要用来抽象功能.

4、抽象类中,且不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的。

当您注意事物的本质时,请使用抽象类. 注意操作时,请使用界面.

抽象类的功能远远超过接口,但是定义抽象类的成本很高. 因为高级语言(也就实际设计而言)每个类只能继承一个类. 在此类中,您必须继承或编写其所有子类

所有共同点. 尽管界面会在功能上削弱很多,但这仅是对动作的描述. 您可以在一个类中同时实现多个接口. 这样可以减少设计阶段的难度.

使用界面

接口: 接口

在PHP中,我们可以使用接口指定对象应具有的公共外部操作.

公共方法是接口. 用于指定对象应使用的公共操作方法(接口). 这也称为接口(公共操作方法的集合)

抽象类和接口的区别_14类商标和35类区别_rgb接口与av接口区别

即接口(接口结构,公共方法集合)

公共方法(接口方法)

定义: 一种用于限制对象必须具有的公共操作方法的结构,称为接口.

语法: 要定义接口结构,请使用interface关键字. 接口中定义的所有公共方法.

注意:

1. 接口方法,访问权限必须是公共的

2. 接口中只能有公共方法,而没有成员变量.

3. 该接口只能包含未实现的方法,也称为抽象方法,但不能包含abstract关键字.

该类实现了接口,该接口使用关键字Implements完成.

这样,实现接口的类必须实现接口中的所有抽象方法. 可以肯定的是,该方法必须是公开的外部操作方法.

多重实现: 理论上,抽象类可以实现此功能,但是抽象类并不.

接口更加,其实现是因为PHP支持多种实现抽象类和接口的区别,但仅支持单一继承.

支持php对象接口,可以定义类常量,也可以继承接口

抽象类和接口的区别_rgb接口与av接口区别_14类商标和35类区别

抽象方法和抽象类

在OOP语言中,一个类可以具有一个或多个子类,并且每个类至少具有一个公共方法作为

外部代码通过其访问接口. 为方便继承而引入了abstract方法,让我们看一下abstract类和

然后,抽象方法的定义说明了其目的.

什么是抽象方法?我们在没有方法主体的类中定义的方法是抽象方法,即所谓的no方法

主体是指这样的事实: 声明方法时没有花括号及其内容,但声明方法时紧随其后

以分号结尾,并添加关键字“抽象”以修改抽象方法;

例如:

抽象函数fun1();

抽象函数fun2();

上面的示例是由“抽象”修改的抽象方法“ fun1()”和“ fun2()”,没有方法主体,请不要忘记

抽象方法后还有分号;那么什么是抽象类?只要类中的一种方法是抽象的

方法,则应将此类定义为抽象类,并且还应使用“ abstract”关键字对抽象类进行修改;在抽象类中

抽象类和接口的区别_14类商标和35类区别_rgb接口与av接口区别

表面可以具有非抽象方法和成员属性,但是只要一个方法是抽象方法,就必须声明该类

是一个抽象类,以“抽象”修饰.

在上面的示例中,定义了一个抽象类“ Demo”并用“ abstract”修饰,并且在该类中定义了一个

一个成员属性“ $ test”,两个抽象方法“ fun1”和“ fun2”,以及一个非抽象方法fun3();那

我们如何使用抽象类?最重要的一点是,抽象类不能产生实例对象,因此不能直接使用

是的,我们已经提到过很多次,这些类不能直接使用. 我们使用通过类实例化的对象,因此提取它们.

Elephant类无法产生实例对象. 声明抽象类有什么用?我们使用抽象方法作为子类重载的模型

对于董事会而言,定义抽象类等同于定义规范,该规范要求子类必须遵循,子类仍是抽象的

之后

类,根据子类的需要在抽象类中实现抽象方法. 子类必须将所有抽象方法放在父类中

全部实现,否则子类中有抽象方法,则子类仍然是抽象类,并且仍然无法实例化;为什么我

我们必须继承抽象类吗?因为有时我们必须从抽象类继承一些函数,否则

您无法实现这些功能. 如果继承抽象类,则必须在该类中实现抽象方法;

单人模式

单人模式(责任模式): 简单地说,一个对象(在学习设计模式之前,您需要了解面向对象的思想)仅负责特定的任务;单例类: 1.构造函数需要标记为私有(访问控制: 防止外部代码使用new运算符创建对象),单例类不能在其他类中实例化,而只能由自身实例化; 2.具有一个静态成员变量,该变量保存该类的一个实例. 3.具有一个公共静态方法来访问该实例(通常使用getInstance()方法来实例化一个单例类,通过instanceof运算符可以检测该类是否具有被实例化)另外,您需要创建__clone()方法以防止对象被复制(克隆))为什么使用PHP单例模式? 1. php的应用程序主要在应用程序中,因此在一个应用程序中将有大量的操作. 使用单例模式可以避免新操作消耗大量资源. 2.如果系统需要一个类来全局控制某些配置信息,则可以使用单例模式轻松实现. 这可以在ZF的FrontController部分中看到. 3.在页面请求中,调试很容易,因为所有代码(例如操作类db)都集中在一个类中,我们可以在该类中设置钩子并输出日志,以避免在任何地方都出现var_dump和echo . 代码实现: / 1 ***设计模式的单例模式* $ _instance必须声明为静态私有变量*构造函数和析构函数必须声明为私有,以防止外部程序new *类丢失单例模式的含义* getInstance( )方法必须设置为public,并且必须调用此方法*以返回对实例的引用* ::运算符只能访问静态变量和静态函数*新对象将占用内存*用法场景: 最常见的地方是连接. *使用单例模式生成对象后,*该对象可以被许多其他对象使用. * /

复制代码

class Danli {  
   
//保存类实例的静态成员变量  
private static $_instance;  
   
//private标记的构造方法  
private function __construct(){  
echo 'This is a Constructed method;';  
}  
   
//创建__clone方法防止对象被复制克隆  
public function __clone(){  
trigger_error('Clone is not allow!',E_USER_ERROR);  
}  
   
//单例方法,用于访问实例的公共的静态方法  
public static function getInstance(){  
if(!(self::$_instance instanceof self)){  
self::$_instance = new self;  
}  
return self::$_instance;  
}  
   
public function test(){  
echo '调用方法成功';  
}  
   
}  
   // 何问起 hovertree.com
//用new实例化private标记构造函数的类会报错  
//$danli = new Danli();  
   
//正确方法,用双冒号::操作符访问静态方法获取实例  
$danli = Danli::getInstance();  
$danli->test();  
   
//复制(克隆)对象将导致一个E_USER_ERROR  
$danli_clone = clone $danli;


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-288671-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...