例如:
abstract class Demo { var $test; abstract function fun1(); abstract function fun2(); function fun3(){ ... } }
登录后复制
3、抽象类的作用是什么?
在上面的反例中,定义了一个具体类“demo”,并用“abstract”进行了修饰。 在这个类中,定义了一个成员属性“$test”,两个具体方法“fun1”和“fun2”以及一个非表征性的方法fun3();
我们如何使用这样的具体类? 最重要的一点是,具体类不能形成实例对象,因此不能直接使用它们。 上面我们多次提到,类不能直接使用。 我们使用通过类实例化的对象。
所以具体类不能形成实例对象。 声明具体类有什么用? 我们使用具体方法作为泛型重载的模板。 定义一个具体类相当于定义一个规范。 这些规范要求泛型违反它。 泛型继承具体类后,根据泛型的需要来实现具体类上的具体方法。 泛型必须实现父类中的所有具体方法,否则泛型中仍然存在具体方法,因此泛型仍然是具体类,无法实例化对象;
为什么我们必须继承具体类? 因为有时候我们想要实现一些功能,就必须继承具体类,否则就无法实现这个功能。 如果继承具体类,则必须在类中实现具体方法;
例如:
<? abstract class Demo { var $test; abstract function fun1(); abstract function fun2(); function fun3() { ... } } $demo=new Demo(); //抽象类不能产生实例对象,所以这样做是错的,实例化对象交给子类 class Test extends Demo { function fun1() { ... } function fun2() { ... } } $test = new Test(); //子类可以实例化对象,因为实现了父类中所有抽象方法 ?>
登录后复制
4、抽象类的特点:
具象类不能被实例化,只能被继承。
具体的类不一定有具体的方法。 具有具体方法的类必须是具体类。
代表性可见性不能是私有的。
泛型中的代表性方法需要重新绘制。
5.什么时候需要使用具体类?
有一个方法。 我不知道如何写技术正文。 当泛型类型中需要这个方法时,将其封装成具体方法,该类就是具体类。
当必须将单独的技术封装在控制泛型中时,可以使用具体的方法。
当需要控制一个只能继承而不能实例化的类时。
6. 接口
如果类中的所有方法都是具体的并且没有成员属性,则该类称为接口。
interface Common{ abstract function work(); abstract function test($args); }
登录后复制
插座扩展:
套接字继承套接字接口套接字名称,扩展父套接字名称。
注意:类的继承是单继承(只能有一个父类)php接口和抽象类的区别,但是socket的继承是多重继承,类对socket的实现也是多重实现。
套接字实现:
类实现套接字类 类名实现套接字名称 1、套接字名称 2、...
继承的类也实现套接字:
类继承父类并实现socket类 类名extends父类名 实现socket名
7. 抽象类和socket的区别
套接字是一个特殊的具体类。 套接字只包含具体的方法,没有成员属性。 当一个类实现一个套接字时,它必须完全实现该套接字中的所有方法;
当一个类继承(扩展)一个具体类时,只需要重绘需要使用的具体方法即可。 具象类只能有单继承,但套接字有多重继承php接口和抽象类的区别,类的套接字实现也有多个实现。
发表评论