精华内容
下载资源
问答
  • php oop思想的三大特性分别为:封装,继承以及多态,在这里,我将具体的和大家说一下对php opp思想的理解,那么,接下来我们就来具体的看一看opp思想的三大特征及php opp思想。封装性封装性就是把对象的属性和行为...

    php oop思想的三大特性分别为:封装,继承以及多态,在这里,我将具体的和大家说一下对php opp思想的理解,那么,接下来我们就来具体的看一看opp思想的三大特征及php opp思想。

    封装性

    封装性就是把对象的属性和行为结合成一个独立的单位。

    封装一个类需要两步 第一步是私有化一个类 第二步是用set和get 做出读取赋值的操作

    他的好处是:隐藏类的实现细节,可以方便加入逻辑控制性,限制对属性的不合理操作,便于修改增强代码的可维护性。

    __get与__set

    一般说把类私有话更符合现实的逻辑。

    预定义两种函数来进行获取与敷值操作。

    __get 获取值通常是域的值

    __set 设置值通常是域的值

    __call 调用一个对象中不存在的方法时,就会产生错误call()这个方法来处理这种情况。

    静态属性和方法

    static关键字 来声明静态方法

    static静态变量 在类的内部生成一个静态变量 就是能够被所有类的实力化共想 也就是说静态成员则放到了“初始化静态段”,在类第一次被加载的时候放入的,可以让堆内存里面的每个对象所共享

    使用方法:self::$静态属性、self::静态方法static function p(){

    echo self::$country;

    echo self::PI;//访问常量

    //echo $this->name;在静态方法中只能操作静态属性

    //self::p();

    }

    外部调用:类::$静态属性、类::静态方法

    const关键字:用来生成常量 常量是唯一的不能改变的 惯例常量为大写

    const CONSTANT = 'constant value'; 生成一个常量

    echo self::CONSTANT;//类内部访问

    echo ClassName::CONSTANT;//类外部访问

    继承性

    B类的对象拥有A类的全部属性与行为,称作B对A类的继承。

    假如一个类从多个类中继承了属性与服务,这称为多继承,通常我们成为继承类为子类被继承类为父类,在PHP中只有单继承,但一个父类可以被多个类继承,但是一个子类只能有一个父类,但是允许关联继承,通过继承可以减化类的定义。

    extende声明继承关系

    语法格式:class B extends A 此范例指明 B继承了A

    类的外部访问对子类是有效的

    子类与父类的属性与方法

    子类继承父类的所有内容,但父类中的private部分不能直接访问

    子类中新增加的属性和方法是对父类的扩展

    子类中定义的与父类同名的属性是对父类属性的覆盖,同名的方法也是对父类方法的覆盖

    重写的方法

    在子类中,使用parent访问父类中的被覆盖的属性和方法

    parent::__construce();

    parent::$name;

    parent::fun();

    覆盖父类原有属性

    clone克窿对象 语法格式$c=clone $p; $c克窿的对象$p 输出echo $c->name;

    对象比较

    ===两个比较运算符。

    ==是比较两个对象的内容。

    ===是比较对象的句柄,即引用地址。

    instanceof操作符用于检测对象实力是否属于某一个类的类型 属于返回true 不属于返回false

    __clone()如果想在克隆后改变原对象的内容,需要在__clone()中重写原本的属性和方法function __clone(){

    $this->name="我是一个克隆人";

    }

    final表示一个类是最终版本 也就是说它不能在被子类调用

    多态性

    多态性是指在父类中定义的属性或行为被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在父类及其各个子类中具有不同的语义。

    就是说同一种方法在子类与父类中执行的结果不同。class A {

    function info(){

    echo “A INFO”;

    }

    }

    class B extends A {

    function info(){

    echo “B INFO”;

    }

    }

    class C extends A {

    function info(){

    echo “C INFO”;

    }

    }

    function printinfo($obj){

    function printinfo(A $obj){

    if($obj instanceof A)

    $obj->info();

    $obj->info();

    }

    }

    $a=new A(); $b=new B(); $c=new C();

    printinfo($a); //输出A INFO

    printinfo($b); //输出B INFO

    printinfo($c); //输出C INFO

    抽象方法和抽象类

    抽象方法是作为子类摸版使用的。abstract class Person{

    public $name;

    abstract function getInfo();

    }

    抽象类不能被实力话,一个抽象类中,必须有一个抽象方法。但是抽象类中可以定义动态函数。

    接口

    当一个类继承了一个接口之后,它要覆盖接口的所有方法,接口只能声明常量,接口的方法必须定义为共有否则无法继承,接口可以与多个接口间继承

    语法:interface PCI{

    const TYPE="PCI";

    //public $name; error

    function start();

    function stop();

    }

    接口中的方法可以声明为static

    interface A{ function a();}

    interface B{ function b();}

    interface C extends A{ function c();}

    class D implements B,C{

    function a(){}

    function b(){}

    function c(){}

    }

    相关推荐:

    展开全文
  • OOP思想指的是什么?

    2021-03-25 09:06:10
    OOP思想指的是面向对象编程,面向对象强调对象的“抽象”、“封装”、“继承”、“多态”,相比面向过程该思想专注于通过对象的一些方法去解决问题,不同的功能可能由不同的对象来负责解决。类和对象类:类是一个...

    OOP思想指的是面向对象编程,面向对象强调对象的“抽象”、“封装”、“继承”、“多态”,相比面向过程该思想专注于通过对象的一些方法去解决问题,不同的功能可能由不同的对象来负责解决。

    8e38bf8bebd61642b21920fd256398e5.png

    类和对象

    类:类是一个抽象概念,是一类具有相同特征的事物的统称,比如大学生;

    对象:对象是具体事物的实体,比如具体的学生张三。

    面向对象的三大特征

    1、封装

    封装指一个类可以有一些私有属性和方法,可以将一个问题的解决方法封装起来,对外只提供一部分接口,通过调用接口可以解决问题但是外部并不知道具体解决方法是什么。

    2、继承

    一个类可以通过继承得到另一个类的非私有属性和方法,这样被继承的类就的属性和方法就可以被复用。

    3、多态

    同一个父类实例化出来的子对象,通过调用同一个方法,且可以得到不相同的结果,这就是多态。

    七大设计原则

    SOLID原则

    单一职责原则:只能让一个类/接口/方法有且仅有一个职责;

    开放关闭原则:对扩张开放,对修改封闭;

    里氏替换原则:所有引用基类的地方必须能透明地使用其派生类的对象;

    接口隔离原则:不能强迫用户去依赖那些他们不使用的接口,使用多个接口优于使用一个总接口;

    依赖倒置原则:

    A、高层模块不应该依赖于低层模块,二者都应该依赖于抽象

    B、抽象不应该依赖于细节,细节应该依赖于抽象 C.针对接口编程,不要针对实现编程

    迪米特法则:一个软件实体应当尽可能少地与其他实体发生相互作用

    组合复用原则:尽量使用组合/聚合,不要使用类继承推荐教程:《PHP》

    展开全文
  • Java OOP 思想解析

    2021-03-14 22:49:11
    面向对象中最为重要的三大思想就是:继承、封装、多态。本文将以一个实例场景来分析Java中的OOP。现有一个场景:学校人员管理。首先分析出此场景所包含的角色类别:学生,老师,校长。那么我们可以为每个角色类别...

    因为有着一年半的iOS开发经验(OC也是一门面向对象的语言)所以在对Java的面向对象的理解上也是有着自己的理解,今天就和大家分享一下。

    面向对象中最为重要的三大思想就是:继承、封装、多态。本文将以一个实例场景来分析Java中的OOP。现有一个场景:学校人员管理。

    首先分析出此场景所包含的角色类别:学生,老师,校长。那么我们可以为每个角色类别创建对应的类(具体相同特征或者行为的一种抽象)。学生(Student)、老师(Teacher)、校长(Headermaster)现在我们可以来分析一下这些类有没有一些共同的属性比如:姓名(name)、年龄(age)、性别(sex)等,因此我们就可以采用继承的思想,创建一个基类,让其他的类都继承这个基类(Person类),把共同的属性和方法就写在这个基类里面,其子类自动地共享基类中成员属性和成员方法。对应的目录如下

    1e26522a4070?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    目录

    在基类的基础上,我们可以为每个类增加自己特有的属性和方法。

    我们以Person类和Student类还有Teacher类来分析封装和多态的概念

    1.Person类

    1e26522a4070?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    person类(省略set、get方法)

    2.Student类

    1e26522a4070?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    student类

    3.Teacher类

    1e26522a4070?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    teacher类

    4.测试方法

    public static void main(String[] args) {

    Person person = new Student("xiaoming", "male", 12);

    person.roleDescribe();

    //person.scoreDescribe(); // 错误

    Person teacher = new Teacher("MSWang", "female", 43);

    teacher.roleDescribe();

    Student xiaodong = new Student("xiaodong", "male", 13);

    xiaodong.roleDescribe();

    xiaodong.setScore(95.6);

    xiaodong.scoreDescribe();

    }

    运行结果:

    i am a student

    i am a teacher

    i am a student

    i get 95.6!!

    我们来分析一下:

    多态:通过基类(Person)去创建子类(Student、Teacher)的对象,并且调用一个同名的方法roleDescribe()。由于子类中都覆盖了此方法所以此方法的效果会有多种形态,此过程便是多态。

    封装:封装就是把数据和过程封装起来,对数据的访问只能通过已经定义的接口。在Java中可以通过public\private\protected 来实现封装。比如:Person类的name,age,sex都是私有属性,这是对属性的封装。对外界提供方法的封装,可以通过提供的方法对name,age,sex进行设置和获取。

    但是看看Teacher类可以发现并没有提供薪水的(salary)的get方法,那是因为老师不想被其它人知道他的工资。

    展开全文
  • oop_php oop思想_oop和ood

    2021-03-25 09:07:12
    我想从一个游戏程序员的角度探讨OOP的一个问题──性能。现时C++可以说是支持OOP范式中最为常用及高性能的语言。历史上,OOP大概是60年代出现,而C++诞生于70年代末。现在的硬件和当时的有很大差异,其中最大的问题...

    db56ce859b53ff0c8adbf75193eba663.png

    我想从一个游戏程序员的角度探讨OOP的一个问题──性能。

    现时C++可以说是支持OOP范式中最为常用及高性能的语言。

    历史上,OOP大概是60年代出现,而C++诞生于70年代末。现在的硬件和当时的有很大差异,其中最大的问题是内存墙_百度百科。

    图1: 处理器和内存的性能提升比较,处理器的提升速度大幅高于内存[2]。图1: 处理器和内存的性能提升比较,处理器的提升速度大幅高于内存[2]。

    跟据Numbers Every Programmer Should Know By Year:

    图2:2014年计算机几种操作的潜伏期(latency)。图2:2014年计算机几种操作的潜伏期(latency)。

    从这些数据,我们可以看出,内存存取成为现代计算机性能的重要瓶颈。然而,这个问题在C++设计OOP编程范式的实现方式之初应该并未能考虑得到。现时的OOP编程有可能不缓存友好(cache friendly),导致有时候并不能发挥硬件最佳性能。以下描述一些箇中原因。

    bf56333eacb64d3373c13db09575a078.png

    1. 过度封装

    使用OOP时,会把一些复杂的问题分拆抽象成较简单的独立对象,通过对象的互相调用去实现方案。但是,由于对象包含自己封装的数据,一个问题的数据被分散在不同的内存区域。互相调用时很可能会出现数据的cache miss的情况。

    2. 多态

    在C++的一般的多态实现中,会使用到虚函数表。虚函数表是通过加入一次间接层来实现动态派送。但在调用的时候需要读取虚函数表,增加cache miss的可能性。基本上要支持动态派送,无论用虚函数表、函数指针都会形成这个问题,但如果类的数目极多,把函数指针如果和数据放在一起有时候可放缓问题。

    3. 数据布局

    虽然OOP本身并无限制数据的布局方式,但基本上绝大部分OOP语言都是把成员变量连续包裹在一段内存中。甚至使用C去编程的时候,也通常会使用到OOP或Object-based的思考方式,把一些相关的数据放置于一个struct之内:

    即使不使用多态,我们几乎不加思索地会使用这种数据布局方式。我们通常会以为,由于各个成员变量都紧凑地放置在一起,这种数据布局通常对缓存友好。然而,实际上,我们需要考虑数据的存取模式(access pattern)。

    5addf8737a2bbda62e09f342e045d116.png

    在OOP中,通过封装,一个类的各种功能会被实现为多个成员函数,而每个成员函数实际上可能只会存取少量的成员变量。这可能形式非常严重的问题,例如:

    在这种模式下,实阶上只存取了两个成员变量,但其他成员变量也会载入缓存造成浪费。当然,如果在迭代的时候能存取尽量多的成员变量,这个问题可能并不存在,但实际上是很困难的。

    如果采用传统的OOP编程范式及实现方式,数据布局的问题几乎没有解决方案。oop所以在[1]里,作者提出,在某些情况下,应该放弃OOP方式,以数据的存取及布局为编程的考虑重中,称作面向数据编程(data-oriented programming, DOP)。

    有关DOP的内容就不在此展开了,读者可参考[1],还有[3]作为实际应用例子。

    [1] ALBRECHT, “Pitfalls of Object Oriented Programming”, GCAP Australia, 2009. research.scee.net/files/presentations/gcapaustralia09/Pitfalls_of_Object_Oriented_Programming_GCAP_09.pdf

    [2] Hennessy, John L., and David A. Patterson. Computer architecture: a quantitative approach. Elsevier, 2012.

    [3] COLLIN, “Culling the Battlefield”, GDC 2011. dice.se/wp-content/uploads/CullingTheBattlefield.pdf

    本文来自电脑杂谈,转载请注明本文网址:

    http://www.pc-fly.com/a/tongxinshuyu/article-47256-1.html

    展开全文
  • 简述JAVAoop思想

    2021-01-16 19:20:45
    oop编程思想 核心:一切皆对象。 1.通过特征实现对象化操作: 1、封装 2、继承 3、多态 4、抽象 5、接口 2、 类定义(Class) 作用:类属于java中创建对象的工厂,通过一个类创建出不同的对象,从而就 ...
  • 面向对象编程的概念:不同的作者之间说法可能不一样,但是一个OOP语言必须有以下几方面:抽象数据类型和信息封装、继承、多态在PHP中是通过类来完成封装的:代码:class Something {// 在OOP类中,通常第一个字符为...
  • 图书信息内容简介《冒号课堂:编程范式与OOP思想》是以编程范式和抽象机制为主线阐述编程设计思想的图书。冒号课堂编程范式与oop思想它以编程语言为形、以编程范式为神、以抽象机制为本,采用课堂对话的形式讲述编程...
  • true,false3、选择器(当然可以根据需求,增加,目前先封的这三个)仅供参考觉得oop面向对象的思想比较有意思,前端中JS也可借鉴思想,想让代码变得更好看,变得更酷一些, 在逻辑没问题的基础上,可以用oop思想进行...
  • 什么是oop思想OOPS is a programming approach which provides solution to real life problems with the help of algorithms based on real world. It uses real world approach to solve a problem. So object ...
  • (一)OOP思想详解

    2021-03-14 22:48:17
    面向对象OOP的设计思路其实是把“抽象”这种编程方法进行了新的解释说明,把具体的人或事务抽象成了“类”“对象”的形式。面向对象的主要思想:万物即对象程序是对象的组合每个对象都有自己的空间,可以容纳其他...
  • Python学习记录4-面向对象,,OOP思想以模块化思OOP思想以模块化思想解决工程问题面向过程 vs 面向对象由面向过程转向面向对象常用名词OO:面向对象ooa:分析ood:设计oop:编程ooI:实现ooa -> ood -> ooi类 ...
  • C++三大特性:封装 继承 多态 封装:属性和行为实现保护起来,通过公共的接口来操作属性 通过访问限定符来实现 访问限定符 (1)public(公有):任意访问 (2)protected(保护):子类和本类类中 ...
  • 1.OOP思想与理论其实我不知道在这里提OOP思想会不会是一种再炒蛋炒饭的行为,但是还是说说自己的理解。OOP即Object-Oriented Programming,是面向对象程序设计的意思。如果像我一样是学C出身的朋友,刚开始接触的...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼/** * * 这是一段Java程序写个他最爱的老婆的代码 * */public class 给最爱的老婆 {// 老婆是私有,全局唯一,不可更改继承的private static final class 老婆 {// 老婆...
  • 我们需要保证代码具有高内聚低耦合,这里我们使用了OOP编程思想oop四大基本特性: 抽象:提取现实世界中某事物的关键特性,为该事物构建模型的过程。对同一事物在不同的需求下,需要提取的特性
  • C++语言的一个重要特征是可以进行面向对象的设计(OOP),而OOP的核心思想之一便是使用继承,可以定义相似的类型并对其相似关系进行建模。通过继承联系在一起的类构成一种层次关系,层次关系的根部有一个基类(base ...
  • 避免OOP的形式,POP的思想_PHP避免OOP的形式,POP的思想好久没发技术性文章了,今天在21PHP里看到有位兄弟发了这贴子,转了过来.对加强OOP的学习有些用----------------------------------------------------------避免...
  • OOP的封装是为了隐藏对象的字段和实现细节,仅对外公开接口,控制在程序中字段的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,...
  • 如果你尚未用OOP思想来完善你的程序设计,那你真的OUT了。 PHP中的面向对象,是从PHP5开始完善的,之前的版本本质上还是面向过程的。面向过程只为我们程序提供了一定程度的代码重用。然而,没有OO的特质,依然不妨碍...
  • 封装 Go语言中并没有特定的方式去定义一个所谓的“类”,所以,Go语言中实现对象中封装的方式比较特殊,通过在函数名字前(func和函数名之间)放上一个变量,从而实现将这个函数与该变量进行绑定,使这个函数成为该...
  • 一、继承 继承是面向对象非常重要的特点之一,用好继承能够 使程序具有更好的可扩充性,减少程序的代码量。 1.1 什么是继承
  • 二:那么OOA、OOD、OOP其实表示什么呢? OOA =>Object-Oriented Analysis:面向对象分析 -- 需求分析过程 OOD =>Object-Oriented Design:面向对象设计 -- 将各个功能和模块向上级申请和审批过程 OOP =>...
  • 面向对象编程——Object Oriented Programming,简称 OOP,是一种程序设计思想OOP 把对象作为程序的基本单元,一个对象包含了成员变量和操作成员变量的方法。 面向过程的程序设计把计算机程序视为一系列的命令...
  • 面向对象编程(Object-Oriented Programming)与面向过程(Procedure Oriented )两种方法都是编程中的比较常用的方法,从理论上来说,都能达到用计算机程序来解决实际问题的目的, 只不过是其中所体现出来的思想不一样...
  • C语言的OOP编程 在网络上搜索C语言与C++语言的区别,有很多资料都会提到:C语言是“面向过程编程”的语言。在开发小型的应用程序时,程序员用C语言较为得心应手。但是当问题比较复杂,程序的规模比较大的时候,...
  • Java面向对象详解

    2021-05-13 06:18:53
    Java的核心思想就是OOP 初识面向对象 面向过程 步骤清晰简单,第一步做什么,第二步做什么.... . 面对过程适合处理一些较为简单的问题 面向对象 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,...
  • Java-OOP

    2021-03-10 03:47:55
    面向对象编程(OOP)1、初识面向对象JAVA的核心思想就是OOP。1.1、面向过程和面向对象:面向过程思想:(线性思维)分析第一步、第二步…适合处理简单的事情。面向对象思想:物以类聚,分类的思维,先考虑怎么分类,对每...
  • 本文概述面向对象编程是围绕对象而不是动作和数据而不是逻辑组织的编程模型。类类是一个实体, 它确定对象的行为方式以及对象将包含的内容。换句话说, 构建特定类型的对象是一个蓝图或一组指令。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,387
精华内容 18,154
关键字:

oop思想