zoukankan      html  css  js  c++  java
  • 面向对象三大特性(面试经常问)--2017-04-18

     一、封装

      1、目的:是为了使类更加安全

      2、步骤:

    (1)       将成员变量变为私有

    (2)       做一个成员方法间接访问

    (3)       在该方法里面来加限制条件

    第一种:

    class Ren

    {

    private $age;

           function setAge($n)        -------------给变量赋值  

           {

                  if ($n>=18 && $n<=50){      

                  $this->age=$n;

                  }

                  }

           function getAge()        -------------取值  

           {

                  return $this->age;

                  }

           }

    $r = new Ren();

    $r->setage(12);        -------------给变量赋值  

    echo $r->getName();         -------------取值  

     缺点: 如果成员变量太多,就需要赋值取值很多次;代码工程量大。

    第二种: 采用魔术方法 (.net中引用成员属性,php中没有,所以采用魔术方法)

    class Ren

    {

           private $age;

                  private $name;

           //魔术方法,给变量赋值

                  function __set($n,$v)     //$n:变量名称   $v:变量值            {

                 

                  if ($n=="age"){                      //加条件

                         if ($n>=18 && $n<=50)

                         {

                                $this->$n=$v;

                                }

                        

                         }

                         else{

                                $this->$n=$v;

                                }

                  }

                  //魔术方法  取变量值

                  function __get($n){

                         return $this->$n;

                         }                           

    $r = new Ren();

    $r->__set("age",12);           -----第一种赋值方法

    $r->age=20;                 ------第二种赋值方法

    $r->name = "咋";

    echo $r->name;               ------------直接调用

     2、继承    子类可以继承父类的一切

    特点:单继承 --------  一个类只能有一个父类,一个父类可以有多个子类

    Override   parent::run()

    3、(运行) 多态         区别: 重载表现的是编译多态

    当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写(override),该引用在调用方法时表现出来的不同

     子类可以代替父类

  • 相关阅读:
    CSharp Oracle 登陆
    Oracle基本流程语句
    数据库设计三大范式
    自己总结一些操作数据库的方法
    常用数据库取得前几行的方法
    Intellij idea创建javaWeb以及Servlet简单实现
    idea发布到tomcat缺少jar
    回调函数
    spring笔记
    动态代理
  • 原文地址:https://www.cnblogs.com/chenguanai/p/6732105.html
Copyright © 2011-2022 走看看