7月16日
PHP面向对象三大特征
继承:
继承是面向对象中的重要特点之一,就是可以实现一个类只可以继承一个父类,但是一个父类却可以被多个子类所继承
使用继承,关键字extends
默认父类Animal中的属性和行为都被子类继承下来,可以不要再去声明了
继承可以大大的减少我们代码中的重复
继承只能有且也只有一个父类
构造函数也能被继承,当然它也会被子类的构造函数覆盖
具体代码如下:
<?php
class Animal
{
public $name;
public function shout()
{
echo "动物都会叫".',';
}
} /** * class Dog * 使用继承,关键字extends
* 默认父类Animal中的属性和行为都被子类继承下来,可以不要再去声明了
* 继承可以大大的减少我们代码中的重复 * 继承只能有且也只有一个父类
* 构造函数也能被继承,当然它也会被子类的构造函数覆盖
*/
class Dog extends Animal {
public function __construct($name)
{
$this ->name =$name;
} public function desc()
{
echo "狗狗的名字:".$this ->name.',';
$this ->shout();
} /**
* 函数方法的重写
* 将父类中的已经定义过的函数进行重新的定义
*/
public function shout()
{
//parent关键字,意思为父母,在这里指代当前类的父类对象
//parent::shout();
echo "狗狗的叫声:汪汪汪";
}
}
class Cat extends Animal {
public function __construct($name)
{ $this ->name =$name;
} public function desc()
{
echo "喵咪的名字:".$this ->name.',';
$this ->shout();
}
public function shout()
{
//parent关键字,意思为父母,在这里指代当前类的父类对象
// parent::shout(); echo "喵喵的叫声:喵喵喵";
}
} $dog = new Dog('旺财');
$dog ->desc();
echo "<br>";
$cat = new Cat('咪咪');
$cat ->desc();
封装:
是对象和类概念的主要特性,封装是把过程和数据包围起来,对,数据的访问只能通过已定义的界面。(也就是把客观的事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的信息隐藏)
多态:
多态分为抽象和接口
抽象:
使用抽象关键字修饰的类就叫抽象类
抽象类不一定需要有抽象方法,但是包含抽象方法的类必须是抽象类
抽象类不能实例化
抽象的关键字:abstract
使用abstract修饰的函数方法称为抽象方法
抽象方法只有函数的声明部分,不包含实现部分,且要用分号代表结束
继承了带有的抽象方法的类必须实现抽象方法的定义
代码如下:
<?php
//抽象
/**
* 使用抽象关键字修饰的类就叫抽象类
* 抽象类不一定需要有抽象方法,但是包含抽象方法的类必须是抽象类
* 抽象类不能够实例化
* */
abstract class Animal{
/**
* 使用abstract修饰的函数方法称为抽象方法
* 抽象方法只有函数的声明部分,不包含实现部分,且要用分号代表结束
* 继承了带有的抽象方法的类必须实现抽象方法的定义
*/
public abstract function shout();
}
abstract class Dog extends Animal{
}
class Cat extends Animal{
public function shout()
{
echo "抽象函数方法被实现";
}
}
接口是方法的抽象,
接口关键字interface 在接口中的函数都是公共的抽象函数方法
这些函数不能添加abstract关键字,他是也可以省略public。
实现了某个接口,那么必须实现该接口中的所有的抽象方法
一个类可以实现多个接口。
具体代码如下:
//接口
/**
* 接口关键字interface
* 在接口中的函数都是公共的抽象函数方法
* 这些函数不能添加abstract关键字,同时也可以省略public
* 接口通常都是一组功能的结合 */
interface IEly{
public function fly();
function test();
}
interface IEat{
function eat();
}
/**
* class Bird
* 实现了某个接口,那么必须实现该接口中的所以的抽象方法
* 一个类可是实现多个接口
*/
class Bird implements IEly,IEat{
function eat(){
}
public function test(){
}
public function fly(){
}
}
浙公网安备 33010602011771号