Differences between PHPabstract and interface _ javascript tips-js tutorial

Source: Internet
Author: User
This article is a detailed analysis of the differences between abstract and interface in PHP. If you need a friend, you can refer to it and hope to help you. 1. php interface Class: interface

In fact, their role is very simple. When many people develop a project together, they may call some classes written by others, and you will ask, how do I know how the implementation method of a function is named? At this time, the php interface class plays a role. When we define an interface class, the method in it must be implemented by the following sub-classes, for example:

The Code is as follows:


Interface Shop
{
Public function buy ($ gid );
Public function compute ($ gid );
Public function view ($ gid );
}


I declare a shop interface class and define three methods: buy, sell, view ), therefore, none of the three methods must be implemented for all subclasses that inherit this class. If the subclass does not implement these methods, it will not be able to run. Actually, an interface class is a class template and a class rule. If you belong to this class, you must follow my rules, and none of them will work, but how do you do it? I don't care. It's your business, for example:

The Code is as follows:


Class BaseShop implements Shop
{
Public function buy ($ gid)
{
Echo ('item with ID: '. $ gid.' You purchased ');
}
Public function compute ($ gid)
{
Echo ('item with ID: '. $ gid.' You sold ');
}
Public function view ($ gid)
{
Echo ('the item with ID: '. $ gid.' You viewed ');
}
}


You can think about how convenient it is to have an interface class in a large project that has many people working together, so you don't have to ask others, what is the method name of your XX function, of course, if you like this, I can't.

Conclusion: an interface class is the leader of a class. It specifies the direction and the subclass must specify the method.

2. php abstract class: abstract

In fact, the abstract class is very similar to the interface class. I remember where I saw this sentence. The abstract class extracts the class image part. This sentence looks funny. In fact, it tells the truth of the abstract class, the role of an abstract class is that when you find that many of your classes are repeatedly written using many methods, you can consider using an abstract class, you may say, "I can not override a class, each public class, I instantiate a public class, and you can call the same method, in fact, this is the work of the abstract class, but it saves you the step of instantiation, so that you can just call this class method directly, and you can also reload this method. For example:

The Code is as follows:


Abstract class BaseShop
{
Public function buy ($ gid)
{
Echo ('item with ID: '. $ gid.' You purchased ');
}
Public function compute ($ gid)
{
Echo ('item with ID: '. $ gid.' You sold ');
}
Public function view ($ gid)
{
Echo ('the item with ID: '. $ gid.' You viewed ');
}
}
Class BallShop extends BaseShop
{
Var $ itme_id = null;
Public function _ construct ()
{
$ This-> itme_id = 2314;
}
Public function open ()
{
$ This-> require ($ this-> itme_id );
}
}


Here is an example. I want to define a shop class like above, extract all its image parts, buy, sell, and view ), and abstract classes all implement these methods, so the child classes that inherit it will automatically obtain these methods, and the Child classes will do their own unique things, introduce code duplication, and improve reusability.

Conclusion:An abstract class is a service provider of a class. It has many services and you don't have to use them. You can use them when you need them. If you don't feel satisfied with the service, you can also do it yourself. Abstract function methods are similar to interfaces, that is, the methods declared in the parent class, which must be implemented in the subclass, but do not use the abstract declaration method to become a public method of the subclass, there is no need to implement in subclass

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.