博主信息
笑颜常开的博客
博文
61
粉丝
0
评论
0
访问量
28044
积分:0
P豆:211.5

类的继承与方法重写

2019年03月26日 16:45:23阅读数:815博客 / 笑颜常开的博客/ PHP开发

<?php
class Demo05{
//    对象属性
   public $product;
   public $price;
   public function __construct($a,$b)
   {
       $this->product=$a;
       $this->price=$b;
   }
   public function getInfo(){
       return '品名:'.$this->product.',价格:'.$this->price.'<br>';
   }
}
//创建子类继承自Demo05
//class Sub1 extends Demo05{
//
//}
////实例化子类
//$Sub1=new Sub1('手机','2500');
//echo $Sub1->getInfo();
//子类sub2,增加和方法."扩展父类功能"
class Sub2 extends Demo05{
//    $num是子类中新添加的对象属性
   public $num;
//    子类构造方法
   public function __construct($a,$b,$c){
       parent::__construct($a,$b);
       $this->num=$c;
   }
   //计算总价
   public function total(){
       return $this->price*$this->num;
   }
}
$sub2=new Sub2('电脑',4980,13);
echo $sub2->product.'的总价是:'.$sub2->total().'<hr>';
//方法重写(增加,减少功能)
//多重继承
class Sub3 extends Sub2
{
   // 重写父类total()方法, 增加计算折扣价功能
   public function total()
   {
       $total = parent::total();

       // 设置折扣率
       switch (true) {
           case ($total >= 10000 && $total < 20000):
               $discountRate = 0.98;    // 98折
               break;
           case ($total > 20000 && $total < 40000):
               $discountRate = 0.88;    // 88折
               break;
           case ($total > 40000 && $total < 60000):
               $discountRate = 0.78;    // 78折
               break;
           case ($total >= 60000):
               $discountRate = 0.68;    // 68折
               break;
           default:
               $discountRate = 1;
       }
       // 结果四舍五入,保留2位小数
       return round($total*$discountRate, 2);
   }
}
$sub3=new Sub3('电脑',4980,5);
echo '折扣价:'.$sub3->total();

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • php是指把父过来覆盖掉,也就是,其如:首先定义一个构造参数;接着定义一个子把使用“extends”关键字来;最后即可。
    php中是指子一些后,子又在内部定义了相同,而这个新定义会覆盖从父,子只能调用其内部定义,这便是
    通过Thread来创建线程步骤:1、创建一个Thread,并run();2、创建Thread对象;3、调用该对象start(),然后调用run()
    新建Servlet:首先创建一个java;然后HttpServlet;接着【=>doPost/doGet】;最后配置【web.xml】即可。
    多态存在必要条件:1、;2、;3、父引用指向子对象;多态实现式:1、;2、接口;3、抽象和抽象
    php实现多态:1、通过实现接口实现多态;2、利用接口组合,在一个中将另外一个设置成属性来模拟多,通过关系实现多态。
    javascript6种:1、原型链,其点是让新实例原型等于父实例;2、借用构造函数(也称伪造对象或经典);3、组合(组合原型链和借用构造函数);4、原型式
    java中静态不能被,但是可以被。如果父和子静态名相同,那么父静态会被隐藏。静态是编译时绑定是运行时绑定
    Java中使用时需要注意:1、java中只有单,接口有多;2、子,可以得到父全部属性和,但是不一定能直接
    多态是封装、之后,面向对象第三大特性。多态体现为父引用变量可以指向子对象。在使用多态后引用变量调用时,会调用子
    Java中final关键字有哪些用?修饰变量必须初始化或不能修改,修饰不能被,修饰不能被
    Java中可以自定义异常。具体是:1、编一个Exception,或者RuntimeException;2、提供两个构造,一个无参构造,一个带有String参数
    java中final关键字作用是:1、修饰引用;2、修饰;3、修饰。当final修饰时,这个将成为最终,无被子
    ​在这篇文章中,我们将讨论原型以及如何在 JS 中使用它们进行。我们还将会看到原型基于有何不同。
    采用式有:1、原型链,每一个AO对象都有一个prototype,返回对象型原型引用,所以可以给它赋值一个对象;2、原型冒充,把父构造函数拿过来执行一遍;3、复制,把父所有属性和复制过来
    php代码复太多解决办:首先创建两个新BookProduct和Cdproduct;然后使用解决代码问题即可。
    using用是:1、命名空间【using namespace 命名空间】;2、型别名【using aa=double】;3、改变从基成员访问级别;4、让派生对基中所有载函数都可见
    es5和es6区别: ES5是通过原型或构造函数机制实现;它先创建子,再实例化父并添加到子this中。
    区别:1、载必须具有不同参数列表,参数列表必须相同;2、载可以有不同返回型,返回型必须返回型相同。
    php traits作用是针对php这样语言设计,旨在让开发者很便在不同体系多个之间公用一系列,以减少单带来局限性。