zoukankan      html  css  js  c++  java
  • 面向对象的三大特性之继承和多态(20161025)

    课外补充:

    底层语言:C++ C# 直接操作硬件的语言

    堆和栈

    堆:没有规律的存储 地址

    栈:有规律的存储 地址对应的值

    值类型 引用类型 string object

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    <?php
    
    //面对对象三大特性
    //封装
    //目的:让类更安全
    //做法:成员变量变为私有的,通过方法来间接操作成员变量,在方法里面加限制条件
    
    //继承
    //概念:子类可以继承父类的一切
    //方法重写:在子类里面对父类的方法进行重写
    //特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类
    //override:子类对父类的重写
    //overload:子类对父类的重载,编译多态
    class Ren
    {
        public $name;
        function say()
        {
            echo $this->name."正在讲话!";
        }
    }
    
    class China extends Ren        //继承
    {
        public $dizhi;
        
        function say()
        {
            parent::say(); //调用父类的say方法
            
            echo "中国人说话";
        }
    }
    class America extends Ren
    {
        function say()
        {
            echo "speak";
        }
    }
    
    //$c = new China();
    //$c->say();
    
    //$a = new America();
    //$a->say();
    
    //多态(运行多态)
    //概念:当父类引用指向子类实例,由于子类里面对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同状态。
    //条件:1.必须发生在继承下
    //2.必须重写父类方法
    //3.父类引用调用该方法
    
    //如果一个方法需要一个父类参数,可以给一个子类对象
    
    //可以用子类对象替换父类
    
    //父类引用不同的指向子类实例,呈现出不同的多态
    
    ?>
    
    </body>
    </html>
    1025morningtest.php

    因为PHP是弱类型语言,多态无法具体表现出来,所以用了C#语言操作,其代码如下:

     类:
    public class Ren
        {
            public virtual string Speak()
            {
                return "人在说话!";
            }
        }
    
        public class China:Ren
        {
            public override string Speak()
            {
                return "中国人在说话";
            }
        }
        public class America : Ren
        {
            public override string Speak()
            {
                return "美国人在说话";
            }
        }
    
    多态:
     //Ren r = new Ren(); //造一个Ren类的引用指向Ren类的对象
    
     //Ren r1 = new America(); //父类引用指向子类实例
    
    r1.Speak(); //表现出的不同,成为多态
    
    
    //子类对象替换父类例子
     //怪兽吃人
            public string Eat(Ren r)
            {
                return "人类真好吃";
            }
    America a = new America();
    Eat(a);
    多态
  • 相关阅读:
    Markdown基本必学语法
    Javascript检测值
    JS中的函数传参
    解决windows下node-sass报错的问题
    scroll的应用
    css中常见几种float方式以及倒计时(刷新页面不清)
    jquery中append与appendTo方法区别
    如何利用sql注入进行爆库
    Smarty静态缓存
    我的DBDA类
  • 原文地址:https://www.cnblogs.com/zsczsc/p/6119380.html
Copyright © 2011-2022 走看看