面向对象三大特性(封装/继承/多态)

引入:在面向对象思想中,有三大特性,封装  继承  多态。

思考:我们在使用类和对象实现编程的时候,到底是遵循这什么样的逻辑呢?为什么要这样规范类呢?

引入:面向对象很重要的思想就是隐藏,即外部不知道类内部是如何实现业务逻辑的,只管调用和使用结果,这个就是面向对象三大特性之一:  封装

1.封装【掌握】

定义:封装,字面意思就是将内容装到某个容器中,并进行密封保存,在面向对象思想中,封装指数据和对数据的操作捆绑到一起,形成

对外界的隐藏,同时对外提供可以操作的接口。

  1.数据:即要操作的数据,在面向对象的具体体现就是类成员属性,(属性和静态属性)和类常量,这些都是在类的内部定义的用来保存数据的。

  2.数据的操作:即数据加工过程,在面向对象的具体体现就是方法,内部定义业务逻辑对数据进行加工处理。

  3.捆绑到一起:即使用类结构{}将属性,类常量和方法存放到一起,称为整体。

  4.对外提供可操作的接口:即提供可以供外部访问的类成员(通常指的是方法)。

<?php

class student{             //捆绑内容到一起,形成对我i姐隐蔽的整体
   const COUNT=1000;
   private static $name="杜伟";
   private $sex="男";                   //数据属性和类常量的保存

   public function show(){           //数据的操作
        return self::$name;
   }
}

$xim=new student();
echo $xim->show();               //外部只能访问类中公有的方法,具体实现不可见
?>

总结:

  封装是从对象抽象形成类的过程。

  封装是一种将数据和数据操作捆绑到一起,形成对外部的隐蔽,同时提供对外操作的接口。

  封装是面向对象第一大特性,也是面试官喜欢询问对面向对象思想理解的知识。

思考:面向对象思想是符合人类的思维逻辑的,那显示中的“富二代”指类的能过够在面向对象思维具体体现吗?

继承【掌握】

定义:继承,既有些类似的对象中,如人是一种大类,下面可以细分出一些小类,如男人,女人等,然后有一些公共的特性可以在一些基础类中体现,二其他相似或者较小

类可以直接使用上级类中的公共代码。

  1.继承基础:子类(要继承其他类的类,也称为派生类)与父类(被继承的类,也称为基类)之间本身是一种包含与被包含关系,如此才有课继承的前提

<?php
//基类
class posen{       //人类

}

class man{            //男人

}

class wman{             //女人

}

?>

  2.继承关键字extends 子类想要继承父类,则必须在子类结构申明时明确使用extensa关键字来继承相关类

<?php
//基类
class posen{       //人类

}

class man extends posen{            //男人类继承人类

}

class wman extends posen{             //女人类继承人类

}

?>

  3.继承效果:子类可以不用自己去实现某些功能,二可以直接访问父类中已经存在的成员

<?php
//基类
class posen{       //人类
    function eat(){
        echo "吃饭";
    }
}

class man extends posen{            //子类为空类,没有类成员

}

$s=new man();           //实例化子类
$s->eat();                //输出吃饭

总结

  1.继承extends是面向对象中实现代码重复利用的重要特性

  2.继承是指子类可以直接访问父类中已经存在的成员

  3.继承可以节省代码工作,同时允许子类中进行扩展,即在子类中增加必要的父类不存在的功能

多态【了解】

  定义:多态,是指在发生类的继承的情况下,同时出现方法的重写(override),即子类拥有与父类同名的方法。然后在

实例化对象的时候让父类对像(强制类型,php不支持),父类对象表现的子类对象的特点。

1.php是弱类型语言,所以不存在变量的强制类型,因此php不支持多态。

总结:

  1.多态的发生必须有继承关系,并且子类要重写父类方法

  2.多态是指父类对象拥有子类形态,并且可以表现出子类的特性(调用子类方法)

  3.php是弱类型语言,不支持多态。

原文地址:https://www.cnblogs.com/xiaowie/p/12287269.html

时间: 2024-09-30 20:58:41

面向对象三大特性(封装/继承/多态)的相关文章

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

面向对象三大特性:封装,继承,多态(一,封装和继承)

封装.继承和多态是面向对象程序设计的三个核心特性. 封装是面向对象技术中的一个重要概念,是一种信息隐藏技术,它体现了面向对象程序设计的思想. 继承是面向对象程序设计方法的一个重要手段,通过继承可以更有效地组织程序结构,明确类间的关系,育雏利用已有的类来完成更复杂.更深入的程序开发. 多态允许以一种统一的风格处理已存在的变量和相关的类,多态性使得向系统增加功能变的容易. 一.封装 封装的含义是:类的设计者把类设计成一个黑匣子,使用者只能看见类中定义的公共变量和公共方法,而看不见方法的具体实现细节,

Java面向对象三大特性 封装 继承 多态

1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类把自己该做的事情封装起来,而不是暴露给其他类去处理,当内部的逻辑发生变化时,外部调用不用因此而修改,他们只调用开放的接口,而不用去关心内部的实现 举例: public class Human { private int age; private String name; public int get

面向对象三大特性:封装,继承,多态(二、多态)

多态 一,多态的概念 多态(polymorphism), 是指一个名字可以有多种语义.在面向对象语言中,多态是指在一棵继承树中的类中可以有多个同名但不同方法体及不同形参的方法.通常有两种途径实现多态:方法的重载和覆盖. 多态性允许以统一的风格处理已存在的变量及相关的类.多态性使得向系统里增加新功能变得容易.继承性和多态性是降低软件复杂性有有效技术. 二,多态的实现 1.方法的重载 方法重载时: 参数必须不同.参数个数不同或类型不同. 返回值可以相同,也可以不同. 重载的价值在于它允许通过使用一个

面向对象三大特性:封装,继承,多态(三、多态的进一步讲解)

多态(polymoph)指的是“执行期间(而非编译期间)”判断所引用对象的实际类型.,根据其实际的类型调用其相应的方法. 多态也叫动态绑定,也叫迟绑定. 多态的存在有三个必要条件: 要有继承 要有重写 父类引用指向子类对象

面向对象的三大特性---封装继承多态

面向对象的三大特性---封装继承多态 首先我们来创建一个控制台程序 新建一个父类Person 创建一个子类继承父类Person 子类: main函数: 输出结果: 根据结果显示创建子对象,首先调用父类的构造函数在调用子类的构造函数. 继承的传递性 例如: A:B,B:C,则A:C ⅰ.继承过来之后被隐藏,有意隐藏加一个关键字"new",如果加了关键字"new",就告诉子类,父类里面的sayHi只能被隐藏,不能被覆写  ⅱ.继承过来之后被覆写/重写,覆写需要在父类里面

类与对象 面向对象和面向过程对比 面向对象三大特征:封装 继承 多态

 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门 面向对象:大象, 你进冰箱. 此时主语是大象. 我操纵的是大象. 此时的大象就是对象 1. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤, 即, 先?干什么, 后干什么. 基于该思想编写程序就好比在编写一套流水线. 是一种机械 式的编程

【Python学习之旅】---多态(类的相关知识,面向对象三大特性:继承-多态-封装)

class Name: __a='你是猪' #封装变量a def __init__(self,name): self.name=name def get_name(self): print('我叫%s' %self.name) n1=Name('陈宇霞')print(Name.__dict__) #查看类属性字典print(n1._Name__a) #可以通过此种方式调用__a ,没有真正的封装 #执行结果: {'__module__': '__main__', '_Name__a': '你是猪

【Python学习之旅】---封装与反射(类的相关知识,面向对象三大特性:继承-多态-封装)

#第一层封装:定义类#第二层封装:区分内外,有些属性只能内部使用,外部不能 class Name: __a='你是猪' #封装变量a def __init__(self,name): self.name=name def get_name(self): print('我叫%s' %self.name) n1=Name('陈宇霞')print(Name.__dict__) #查看类属性字典print(n1._Name__a) #可以通过此种方式调用__a ,没有真正的封装 #真正的封装:区分内外,