抽象类

1、在实际开发中,我们可能有这样一种类,是其它类的父类,但是它本身并不需要实例化,主要用途是用于让子类来继承,这样可以达到代码复用. 同时利于项目设计者,设计类.

代码实例:


<?php 
//在实现方法覆盖的时候,访问修饰符可以不一样
//但是必须满足: 子类的访问范围>=父类的访问范围
abstract class Animal{
public $name;
protected $age;
//这个方法没有方法体,这个方法主要是为了让子类去实现.
//注意也不能有大括号
abstract public function cry();
}
class Cat extends Animal{
public function cry(){
echo "猫猫叫唤..<br>";
}
}
//创建一个子类实例
$cat1=new Cat();
$cat1->cry();
?>


 使用抽象类的注意事项:


1.基本用法:

      abstract class 类名{

            //方法

            //属性

     }

2.如果一个类使用abstract 来修饰,则该类就是抽象类, 如果一个方法被abstract修饰,则该方法就是抽象方法【抽象方法不能有方法体,连那个大括号也不能有.】

3.抽象类可以没有抽象方法.同时还可以有实现了的方法.


<?php
abstract class Animal1{
public $name="abc";
protected $age;
//这个方法没有方法体,这个方法主要是为了让子类去实现.
abstract public function cry();
public function getName(){
return $this->name;
}
}
class Cat1 extends Animal1{
public function cry(){
echo "猫猫叫唤..<br>";
}
}
//创建一个子类实例
$cat2=new Cat1();
$cat2->cry();
echo $cat2->getName();
echo "<br>";
?>


如果一个类中,只要有抽象方法,则该类必须声明为abstract

<span style="font-size:18px;"><?php 

// abstract class A{

// abstract function test();
// }
// echo "ok";
//5.如果A类继承了一个抽象类 B,则要求A类实现从B类继承的所有抽象方法,除非A类也声明为抽象类。
//案例:
//这是一个抽象类
abstract class A{

abstract function test();
//abstract function test1();
}
//B类要么自己抽象,或者实现从A类继承的抽象方法.
class B extends A{

function test(){
echo "我实现A:test()";
}
}
echo "hello! ";
$a1=new B;
$a1->test();

?></span>