面向对象之抽象化以及接口概述

//什么是抽象类?
//从宏观的角度来说:
就是要实现某种内容 但是又含蓄的保留啦下来(没有真正的实现);
//从程序角度来说:
抽象类就是包含抽象方法的类
抽象类其实就是一种规范 
//什么是抽象方法?
没有实现成员方法 但是又给我吗指引啦一个目标 
//抽象类的定义:
要对将来的程序定义一种规范 
//什么时候使用抽象类:
就是在对程序进行规范的定义 
//如何声明抽象类?
使用 abstract 声明一个抽象类
含有抽象方法的类一定是抽象类 
抽象类不一定包含抽象方法 
抽象方法一定要使用 abstract 关键字进行声明 该方法一定没有方法体 后加;(分号)
抽象的成员不能声明为私有的或者是 final 修饰的 
抽象类不允许直接使用(实例化)
抽象类要想使用必须被后代完全实现 方可使用 
抽象方法的声明格式怎样 实现方法的格式必须要严格按照抽象方法的声明来实现(参数的个数 是否为静态 public protected) 

//什么是接口 ?
从宏观角度:
USB接口 
主板CPU 显卡 内存插槽 
从程序角度来说:
接口是抽的更厉害的抽象类 
借口是所有的成员方法全部是抽象方法 
//为什么使用接口 ?
要定义一种都无法实现的规范 
//如何使用借接口 
使用 interface 关键字 后不要加class直接跟接口名 
接口当中不允许包含成员属性 
接口当中的成员方法必须是没有实现的方法 但是不需要使用 abstract 
接口不允许被实例化
继承接口使用 implements 而不是 extends
一个类可以继承多个接口 接口和接口之前使用逗号隔开 
一个类只允许继承一个父类 如果同时要继承一个类和一个或多个接口 要先去继承类 再去继承机接口  先 extends 在 implements

//接口和抽象类的区别? 
抽象类使用abstract声明 而接口使用interface声明
接口当中的方法一定都是抽象方法 抽象类当中的方法不一定全都是抽象方法 
接口和抽象类都是对后代(子类)定义一种规范而产生的一种产物 
接口是抽象类的特殊情况
接口被继承使用implements 抽象类被继承使用extends 
接口可以同时继承多个 而抽象类一次只能被继承一个   

<?php 
    header("content-type:text/html;charset=utf-8");
    abstract class Marry{
		 public $name = "小张";
		 public $age = 25;
		 public $sex = "男";
		 
		 public function say(){
			 echo "不小啦,想娶媳妇了";
		 }
		 
		 public function buyCar(){
			 echo "我买啦一个二首的自行车";
		 }
		 
		 public function buyHouse(){
			 echo "我买了一套房子,在看守所";
		 }
		 
		 abstract public function register($address="");
		 
		 abstract public function getSon() ;
	 }
	 //抽象类不允许被实例化 
	 //$m = new Marry();
	 
	 class MarryWithCuiHua extends Marry{
		 public function register($address=""){
			 echo "啊 小张终于领证啦";
		 }
		 
		 public function getSon(){
			 echo "啊 效率很快 生了";
		 }
	 }
	 //只有所有的抽象方法全部都被实现 才允许 被实例化使用 
	 $m = new MarryWithCuiHua;
	 $m->register();
	 echo "<br/>";
	 $m->getSon();
<?php 
     //使用接口关键字 
	 interface Person{
		 //接口不允许包含成员属性 
		 //public $name = "zhangsan";
		 
		 //接口可以定义常量 
		 const constant = 'const';

         //成员方法不需要使用 abstract 修饰 
		 function say();
		 function eat();
	 }
	 //继承接口不能使用 extends , 而是使用implements 
	 class Son implements Person{
		 function say(){
			 echo "i can say";
		 }
		 function eat(){
			 echo "I can eat";
		 }  
	 }
	 
	 $s = new Son;
	 $s->say();
	 

猜你喜欢

转载自blog.csdn.net/feiyucity/article/details/86513393