关键词:
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。
面向对象是一种编程思想,它是对现实世界的一种抽象描述。
什么是对象?
万事万物都是对象,客观存在的任何一个实体都是对象,区分于我们口语中理解的”对象“。
比如说一个桌子对象,一个椅子对象,一个床对象,一个碗对象。
什么是面向过程编程?
我们之前所说的都是面向过程编程,就是特别强调过程化,所有的代码都要按照正常的编码逻辑一步
一步写,直到实现最后的想要的结果。
什么是面向对象编程?
面向对象编程就是所有的处理均模块化,通过调?已经实现好的功能实现编程。
通过一组图来了解一下什么是面向过程和面向对象。
过程化编程:
面向对象编程:
图解现实生活中一些模块化的商品。
模块化的手机
电脑本身就是模块化
什么是类?
现实生活中,什么叫“人类”?
所谓类,就是对相同或者相似对象的抽象描述。
类和对象什么关系?
先有类,然后通过这?类,得到对象。
比如上面的举例的床对象,既然床是一个对象,那这世界上所有的床就是一类了,我们可以称为
床类,这个世界上有各式各样的床,一说床,每个人想到的肯定是不同样式的床,此时这个床类仅仅
存在于我们的想象中,那我们怎么得到一个具体的床?也就是具体的一个床的对象?而不是仅仅存在
于我们的相像中。
类,仅仅是抽象描述,也就是概念性的东西,并没有实际的实体,只有通过类,形成我们想要的具体
的对象,才能使用,现实世界就是如此
写一个类
函数的写法:
1 //函数定义 2 function fly() 3 echo ‘带我装X带我非‘; 4 //函数调用 5 fly();
如何改成类?
1 //类的定义 2 class fei 3 function fly() 4 echo ‘带我装X带我非‘; 5 6 //调用报错 7 fly(); 8 //正确调用,类需要new才能被调 9 $ff = new fei(); 10 //打印发现返回一个对象 11 var_dump($ff);
类的属性和方法
属性(变量):姓名,年龄,性别,身体
方法(函数):哭,笑,走,跑,生气
类:以人类为例,通过属性(变量)和方法(函数),模拟人的的共同特点,如何让一个人类顺利诞
生?需要new,得到一个具体的人类对象。
类:说白了就是整个一个大类,通过属性(变量/名词)和方法(函数/动作),模拟人或者物(对象)的共同特点
1 //这是原来的变量声明 2 $name = ‘蛋蛋‘; 3 class fei 4 //方法 5 function fly() 6 echo ‘带我装X带我非‘; 7 8 //叫实例化一个类。 9 $ff = new fei();
放在里面就成了属性,如何调用
1 class fei 2 //属性,也叫变量 3 $name = ‘蛋蛋‘; 4 //方法,也叫函数 5 function fly() 6 echo ‘带我装X带我非‘; 7 8 $ff = new fei(); 9 $ff->fly(); 10 //报错,类有固定的语法,需要加一个关键词 11 $ff->name;
1 class fei 2 //属性(公共的) 3 public $name = ‘蛋蛋‘; 4 //语法,public意思为公共的 5 public function fly() 6 echo ‘带我装X带我非‘; 7 $ff = new fei(); 8 $ff->name; 9 $ff->fly();
说明:PHP5以后,方法前面默认不加public也可以调用和执行,默认就是public,之前的版本必须要
加public
类的语法
//类名,不区分大小写,习惯上是大驼峰 class Stu //属性名,调用时不加$ public $sn = ‘00001‘; public $name = ‘lisi‘; //方法名 function ks() echo ‘我叫lisi,我来做php‘;
类的定义方式
定义一个小鸡类:
1 <?php 2 //定义一个小鸡类 3 class Chick 4 //成员属性 5 //就是写在类里面的变量 只不过前面多了一个public 6 public $color;//颜色 7 public $jiguan;//鸡冠 8 public $legs; //有几个腿 9 public $mao; //有鸡毛 10 public $sex ; //性别 11 //类的定义不能出现过程化代码 12 //echo ‘我发现你们的小鸡有点不正经‘; 13 //成员方法 14 //就是写在类里面的函数 只不过前面多了一个public 15 //吃 16 public function eat() 17 echo ‘吃虫子吃沙子.....‘; 18 //叫 19 public function say() 20 echo ‘咯咯哒咯咯哒咯咯哒。。‘; 21 //下蛋 22 public function egg() 23 echo ‘嘎嘎嘎.....‘; 24
成员访问
1 <?php 2 //定义一个小鸭类 3 4 class Duck 5 public $name; 6 public $sex; 7 public $age; 8 public function say() 9 echo ‘嚯嚯嚯‘; 10 //实例化得到对象 11 $tly = new Duck; 12 var_dump($tly); 13 //给成员属性赋值 14 //访问成员属性的时候属性名前面不能加$ 15 $tly->name=‘唐老鸭‘; 16 //赋值性别 17 $tly->sex =‘公‘; 18 //赋值年龄 19 $tly->age = 18; 20 // $name = ‘sex‘; 21 // $tly->$name = ‘李花‘; 22 // $tly->sex = ‘丁美‘; 23 //var_dump($tly); 24 //取值 25 echo ‘名字:‘.$tly->name.‘<br/>‘; 26 echo ‘性别:‘.$tly->sex.‘<br/>‘; 27 echo ‘年龄:‘.$tly->age.‘<br/>‘; 28 //使用成员方法 29 $tly->say();
属性的规则
属性规则:
a. 成员属性可以有默认值,也可以没有
b. 默认值不能是变量 public $name=$ab; public $name=$ab;
c. 默认值不能是函数 public ab(); public ab();
d. 默认值可以是常量 public PI; public PI;
e. 默认值可以有运算 public $a = 1+2; public $a = 1+2;
f. 值可以是任意类型
define(‘NUM‘,20); class Person public $name = "狗蛋"; public $name2; //默认值不能是变量 //public $age=$num; //默认值可以运算 //public $age = (18+2); //默认值不能是函数 //public $age = max(19,5); //默认值可以是已经定义好的常量 public $age = NUM; //常规默认值 public $sex = 5.5; public $a = 5; public $d = true; public $c = null; public $s = array(1,2,3); //类的方法就是函数,可以传值。 public function say($num=10) echo $num; echo ‘我今年‘.$num.‘岁‘; return $num; $ren = new Person(); var_dump($ren); //学员练习调用可用和不可用的属性 $ren->a;
this是谁
先看一段代码:
1 //定义一个叫ren的类 2 class Ren 3 public $name = ‘蛋蛋‘; 4 public function gao() 5 echo $name.‘搞PHP‘; 6 //实例化这个类,得到对象$ren 7 $ren = new Ren(); 8 //报错,在类中使用本类的属性不可直接写 9 $ren->gao();
发现报错了,在类中使用本类的属性不可直接写,而是用 $this 伪变量
1 //定义一个叫ren的类 2 class Ren 3 public $name = ‘蛋蛋‘; 4 public function gao() 5 //伪变量(俗称假变量,替代品) 6 echo $this->name.‘搞PHP‘; 7 //实例化这个类,得到对象$ren 8 $ren = new Ren(); 9 //可以正常调用 10 $ren->gao();
那这个this到底谁在用?this英文单词是这个的意思,在对象中,this指的是这个对象。
1 //定义一个叫ren的类 2 class Ren 3 public $name = ‘蛋蛋‘; 4 public function gao() 5 //伪变量(俗称假变量,替代品) 6 echo $this->name.‘搞PHP‘; 7 //实例化这个类,得到对象$ren 8 $ren = new Ren(); 9 //可以正常调用 10 $ren->gao(); 11 //再次实例化一个对象,得到ren2对象 12 $ren2 = new Ren(); 13 //属性可以利用对象重新赋值 14 $rne2->name = ‘B哥‘; 15 echo $ren2->gao();
记住,谁实例化this就代指这个对象。
python基础之面向对象基本概念(代码片段)
面向过程和面向对象概念过程和函数:过程类似于函数,只能执行,但是没有返回结果;函数不仅能执行,还能返回结果。面向过程和面向对象基本概念面向过程-怎么做把完成某一个需求的所有步骤从头到尾逐步实现;根据开... 查看详情
面向对象的基本概念(代码片段)
面向对象的基本概念1,对象2,类3,封装4,继承5,消息6,多态性优点1,符合人们认识事物的规律2,改善了程序的可读性3,使人机交互更加贴近自然语言 1packageCom.TableTest;23publicclassTableText_194publicstaticvoidmain(String[]args)5Circlec... 查看详情
面向对象概念(代码片段)
实现不同种类之间功能无法互相调用defdog(name,dog_type):defbark(d):print("dog%s:汪。。汪。汪。。。"%d["name"])data="name":name,"type":dog_type,"bark":barkreturndatadefperson(n 查看详情
python面向对象:面向对象(oop)基本概念类和对象基础语法封装案例私有属性和私有方法(代码片段)
一、面向对象(OOP)基本概念面向对象编程——ObjectOrientedProgramming简写OOP目标了解面向对象基本概念01.面向对象基本概念我们之前学习的编程方式就是面向过程的面相过程和面相对象,是两种不同的编程方式对比面向过程的特... 查看详情
javascript--面向对象原型继承(代码片段)
1.面向对象原型继承面向对象编程JavaScript的面向对象编程和大多数其他语言如Java、C#的面向对象编程都不太一样。如果你熟悉Java或C#,很好,你一定明白面向对象的两个基本概念:所以,类和实例是大多数面向对... 查看详情
c++--面向对象的基本概念(代码片段)
面对对象的基本概念面对对象的意义在于1.将日常生活中习惯的思维方式引入程序设计中2.将需求中的概念直观的映射到解决方案中3.以模块为中心构建可复用的软件系统4.提高软件产品的可维护性和可扩展性类和对象使面对对象... 查看详情
面向对象(oop)基本概念(代码片段)
面向对象编程 —— ObjectOrientedProgramming 简写 OOP 01.面向对象基本概念我们之前学习的编程方式就是 面向过程 的面相过程 和 面相对象,是两种不同的 编程方式对比 面向过程&nb... 查看详情
面向对象-概念(代码片段)
...可以通过这个类,初始化或者实例化很多个对象,这就是面向对象 查看详情
面向对象的基本概念(代码片段)
第2章面向对象的基本概念1结构化程序设计1.1了解传统的结构化程序设计的基本方法及其局限性基本方法结构化程序设计也称为面向过程的设计方法,强调数据结构和程序结构,注重代码的易读性,可靠性及可维护性采用自顶向... 查看详情
面向对象中的一些概念的理解(代码片段)
...能相对于前面的内容来说在理解上需要花费一点功夫,但面向对象也是属于打基础的部分,学好虽然不能够加分,但是没有掌握到这方面的知识,在后续的基础学习中,会有一些问题。那,我们开始回顾今天的内容吧!! 1.... 查看详情
关于面向对象设计的一些理解和思路(代码片段)
本文中会介绍一些笔者对于面向对象设计概念学习的笔记、理解以及实现思路。希望这些内容能够帮助大家对面向对象设计这一概念有更多的认识。若文中有错误的理解和概念,请大家及时纠正;吸纳大家的建议,对于我来说也... 查看详情
面向对象概念(代码片段)
面向对象编程(ObjectOrientedProgramming,OOP,面向对象程序设计)是一种计算机编程架构。面向对象是一种编程思想,它是对现实世界的一种抽象描述。什么是对象?万事万物都是对象,客观存在的任何一个实体都是对象,区分于... 查看详情
前端javascript设计模式前奏--面向对象-封装继承多态(代码片段)
JavaScript面向对象如图所示:1.什么是面向对象1.面向对象的概念2.面向对象的三要素:继承/封装/多态⭐️3.JS的应用举例4.面相对象的意义---数据结构化2.面向对象的概念:类+对象1.面向对象的概念:类+对象1.类(模板)/对象(实例)1.... 查看详情
面向对象初识(代码片段)
一、面向对象(OOP)基本概念 面向对象编程 —— ObjectOrientedProgramming 简写 OOP1.1过程和函数过程 是早期的一个编程概念过程 类似于函数,只能执行,但是没有返回值函数 不仅能执行,还可以返回... 查看详情
java面向对象程序设计思想(代码片段)
文章目录面向对象概念扩展:面向功能概念面向对象的三大特性封装封装的实现继承继承的实现C++和Java继承区别多态多态的实现类(对象)之间的关系UML类图泛化关系(Generalization)实现关系(Realization)聚合关系(Aggregation)组... 查看详情
java面向对象程序设计思想(代码片段)
文章目录面向对象概念扩展:面向功能概念面向对象的三大特性封装封装的实现继承继承的实现C++和Java继承区别多态多态的实现类(对象)之间的关系UML类图泛化关系(Generalization)实现关系(Realization)聚合关系(Aggregation)组... 查看详情
面向对象进阶(代码片段)
...的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。2python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可 查看详情
面向对象封装(代码片段)
...和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在jav... 查看详情