第十九节:类与对象-Static关键字-抽象类和抽象方法-接口
2013-02-04 22:58
489 查看
Static关键字
声明类成员或者方法为static,就可以不实例化类而直接访问。不能通过一个对象来访问其中的静态成员(静态方法除外)。
抽象类和抽象方法
当我有多个类使用同一个方法时,就使用抽象类,抽象类中可以不包括抽象方法。
抽象方法和抽象类的一实例
接口的一个实例
自我总结一下什么时候使用接口,什么时候使用抽象类。
当我需要规范命名,而且所有类都有个一共同的特性,共同的方法时,我就使用抽象类。
当我的类继承抽象类的方法后,还有更细分的必要,比如第一个类和第三个类,他们有共同属性,希望统一方法名,第二个类和第四个类有共同属性,希望统一方法名,而第五个类,有他们前四个的共同属性,希望继承他们2波共同的属性,统一方法名,就使用接口。
接口的特点在于多重继承,这就使他更灵活。
多人协作的大项目中,接口和抽象类的良好使用,将使整个项目有序,有条理,便于二次开发。
不然个人写个人的,乱七八糟,一坨坨的,简直无法想象。
即使你遵循开发文档开发,也很难保证你没有地方忘记某个方法,笔误某个方法,接口和抽象类的必须继承性会帮助你在成千上万的方法中快速找到错误。
抽象类是类的类,接口是比抽象类更抽象的类。
声明类成员或者方法为static,就可以不实例化类而直接访问。不能通过一个对象来访问其中的静态成员(静态方法除外)。
<?php class Foo{ public static $str=123; static function bar(){ echo "abv"; } } var_dump(Foo::$str); $foo=new Foo(); var_dump($foo->str);// 输出为空 //$foo->bar(); ?>
抽象类和抽象方法
当我有多个类使用同一个方法时,就使用抽象类,抽象类中可以不包括抽象方法。
<?php abstract class Fruit{ abstract protected function show_msg(); } class apple extends Fruit{ private $name; private $color; function __construct($name,$color){ $this->name=$name; $this->color=$color; } function show_msg(){ echo $this->color.$this->name; } } //多个类需要使用同一个方法 class orange extend Fruit{ private $name; private $color; function __construct($name,$color){ $this->name=$name; $this->color=$color; } function show_msg(){ echo $this->color.$this->name; } } ?>
抽象方法和抽象类的一实例
<?php /*我有一个商城系统 现在有两件商品 电视和洗衣机 设计时 我希望每个商品都输出两个特性 一是价格 而是颜色 */ //作为设计者 设计好这两个方法名字 abstract class Buy{ abstract function price(); abstract function color(); } //写电视机的程序员开始设计 class TV extends Buy{ function __construct(){ $this->price(); $this->color(); } function price(){ echo '电视机一台1999元'."<br/>"; } function color(){ echo '电视机只有黑色'; } } //写洗衣机的程序员 class WM extends Buy{ function __construct(){ $this->price(); $this->color(); } function price(){ echo '洗衣机2000元'."<br/>"; } function color(){ echo '洗衣机只有白色'; } } //首页程序员调用洗衣机和电视的颜色 可以用同一个方法 $obname='WM'; $obj=new $obname; ?>
接口的一个实例
<?php abstract class Buy{ abstract function price(); abstract function color(); } //我现在作为设计者 我有个新东西要引入 我引入了新商品 电饭锅 //和新特性 就是电视机是有节能补贴的 而电饭锅享受商城的折扣8折 而洗衣机既有节能补贴 又有商城八折 //这时我使用接口 来规范 节能补贴 和商城八折 interface jieneng{ function jn(); } interface zhekou{ function zhekou(); } //写电视机的程序员开始设计 //电视机享受的是节能补贴 class TV extends Buy implements jieneng{ function __construct(){ $this->price(); $this->color(); } function price(){ echo '电视机一台1999元'."<br/>"; } function color(){ echo '电视机只有黑色'."<br/>"; } function jn(){ echo '节能补贴800'; } } //写洗衣机的程序员 //既有节能补贴 又有折扣 class WM extends Buy implements jieneng,zhekou{ function __construct(){ $this->price(); $this->color(); } function price(){ echo '洗衣机2000元'."<br/>"; } function color(){ echo '洗衣机只有白色'."<br/>"; } function jn(){ echo '节能补贴800元'."<br/>"; } function zhekou(){ echo '折扣200元'; } } //写电饭锅的程序员 class GUO extends Buy implements zhekou{ function __construct(){ $this->price(); $this->color(); } function price(){ echo '电饭锅2000元'."<br/>"; } function color(){ echo '电饭锅只有白色'."<br/>"; } function zhekou(){ echo '折扣500元'; } } //作为首页程序员 我知道电饭锅和洗衣机有折扣 //为不需要单独问这两个页面的程序员 你的折扣方法是什么 因为他们都是按照设计规则书写的 我只需要知道每个程序员写的类名就可以按照不变的方法调用每个程序员写的折扣 $obname='WM'; $obj=new $obname; $obj->zhekou(); ?>
自我总结一下什么时候使用接口,什么时候使用抽象类。
当我需要规范命名,而且所有类都有个一共同的特性,共同的方法时,我就使用抽象类。
当我的类继承抽象类的方法后,还有更细分的必要,比如第一个类和第三个类,他们有共同属性,希望统一方法名,第二个类和第四个类有共同属性,希望统一方法名,而第五个类,有他们前四个的共同属性,希望继承他们2波共同的属性,统一方法名,就使用接口。
接口的特点在于多重继承,这就使他更灵活。
多人协作的大项目中,接口和抽象类的良好使用,将使整个项目有序,有条理,便于二次开发。
不然个人写个人的,乱七八糟,一坨坨的,简直无法想象。
即使你遵循开发文档开发,也很难保证你没有地方忘记某个方法,笔误某个方法,接口和抽象类的必须继承性会帮助你在成千上万的方法中快速找到错误。
抽象类是类的类,接口是比抽象类更抽象的类。
相关文章推荐
- Java关键字final、static,抽象类,接口使用总结收藏
- 静态类和静态方法,抽象类和抽象方法,new关键字,值类型和引用类型,接口
- String、StringBuffer、StringBuilder区别,HashMap与HashTable区别,final关键字详解及初始化成员变量位置,static关键字详解,抽象类与接口区别
- 面向对象(二)(static,.final,抽象类,接口,内部类)
- php部分---面向对象静态、抽象类、oop接口、加载类、魔术方法、关键字。
- 面向对象高级续2(instanceof关键字、抽象类和接口的应用、Object类、包装类)
- 面向对象_final关键字、多态、抽象类、接口总结
- 黑马程序员--03.Java面向对象--06.【final关键字】【抽象类】【接口】
- Java知识点整理:第七章:static关键字、final关键字、抽象类 、接口、Object类
- Java面向对象8——对象转型,动态绑定,抽象类,final关键字及接口
- 2.0 面向对象 类与实例(关键字)、封装、继承、多态(虚方法,抽象类,抽象方法,接口)
- 马士兵J2SE-第三章-面向对象-Object类:toString方法、equals方法、对象转型、抽象类抽象方法、final关键字、接口
- PHP 对象 抽象方法和抽象类 abstract 接口iinterface
- 四、资源和对象的区别、抽象类和抽象方法、重载技术、接口interface
- 面向对象高级——instanceof关键字的使用以及抽象类与接口的应用
- Java基础(一):Java面向对象、面向对象封装、抽象类、接口、static、final
- Java关键字final、static,抽象类,接口使用总结
- 5.4-全栈Java笔记:面向对象进阶之对象的转型 | FINAL关键字 |抽象方法和抽象类
- php部分---面向对象静态、抽象类、oop接口、加载类、魔术方法、关键字。
- java——构造函数、构造代码块、Static关键字、main函数 & 继承:子父类中的变量、函数的特点、抽象类、接口等