面向对象的特性:封装

1.封装 ****
目的:为了使一个类更加安全

做法: ****
1.将成员变量变为私有的
2.再类中做方法来间接访问成员变量
3.在方法中加入控制条件

//一个成员变量还是可以的,但是不适用于多个成员变量(即可写也可读)

class Ren
{
	public $code;	//人员代号
	public $name;   //人员姓名
	private $sex;    //人员性别
	private $age;    //人员年龄

	//构造函数:用来初始化性别
	function __construct($s)
	{
		$this->sex=$s;
	}

	//造一个修改年龄的方法   写
	function SetAge($a)
	{
		if($a>18 && $a<50)   //条件满足才往下进行
		{
			$this->age=$a;
		}
	}

	//造一个获取age值得方法   读
	function GetAge()
	{
		return $this->age;
	}
}

//造对象
$r=new Ren("男");
$r->SetAge(60);  /条件是18-50之间的年龄,60超出了,所以显示的nullvar_dump($r);

//对于多个变量就可以使用下面的方法

class Ren
{
	public $code;	//人员代号
	public $name;   //人员姓名
	private $sex;    //人员性别
	private $age;    //人员年龄

	//构造函数:用来初始化性别
	function __construct($s)
	{
		$this->sex=$s;
	}

	//__set()魔术方法,给变量赋值
	function __set($n,$v)   //固定要有两个参数:变量名称,变量的值
	{
		if($n=="age")
		{
			if($v>18 && $v<50)  //限制条件
			{
			  $this->$n = $v;
			}
		}
		else
		{
		  $this->$n = $v;
		}
	}

	//__get()魔术方法,取变量值
	function __get($n)    //一个变量名
	{
		return $this->$n;
	}

}

//造对象
$r=new Ren("男");
$r->age=70;      //自动调用__set()方法,将变量名当做第一个参数,将等号右边的值当做第二个参数
$r->name="zha";     //自动调用__set()方法,将变量名当做第一个参数,将等号右边的值当做第二个参数
echo $r->sex;    //自动调用__get()方法var_dump($r);

//另一个知识点

class Dog
{
	public $name;
	function Jiao()
	{
	  echo $this->name."囧";   //注意
	}
	function Setname($n)
	{
	  $this->name=$n;
	  return $this;   //返回新的对象
	}
}
$d=new Dog();
$d->Setname("1")->Jiao();  //连续调对象

时间: 2024-10-13 01:52:59

面向对象的特性:封装的相关文章

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

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

[.net 面向对象编程基础] (11) 面向对象三大特性——封装

[.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承.多态. 1.封装概念 封装:每个对象都包含有它能进行操作的所有信息,这个特性称为封装.这样的方法包含在类中,通过类的实例来实现. 2.封装的优点 A.良好的封装能够减少耦合(比如实现界面和逻辑分离) B.可以让类对外接口不变,内部可以实现自由的修改 C.类具有清晰的对外接口,使用者只需调用,无需关心

面向对象三大特性--封装

//面向对象三大特性//1.封装//目的:让类更加安全,不让外接直接访问类里边的成员变量/*class Ren { private $Name; private $Age; private $Sex; }*/ /*function __construct($s) { $this->Name = $s; } function Say() { echo $this->Name."正在说话!";} function __destruct() { echo "该对象销毁了

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

引入:在面向对象思想中,有三大特性,封装  继承  多态. 思考:我们在使用类和对象实现编程的时候,到底是遵循这什么样的逻辑呢?为什么要这样规范类呢? 引入:面向对象很重要的思想就是隐藏,即外部不知道类内部是如何实现业务逻辑的,只管调用和使用结果,这个就是面向对象三大特性之一:  封装 1.封装[掌握] 定义:封装,字面意思就是将内容装到某个容器中,并进行密封保存,在面向对象思想中,封装指数据和对数据的操作捆绑到一起,形成 对外界的隐藏,同时对外提供可以操作的接口. 1.数据:即要操作的数据,在

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

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

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

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

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

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

python全栈开发【第十五篇】面向对象三大特性——封装

1.封装: 什么是封装呢?(封装不是单纯意义的隐藏,其实它还是可以查看的) 就是把一些不想让别人看的给隐藏起来了 封装数据:目的是保护隐私 功能封装:目的是隔离复杂度 如果用了私有的,在类的外部,无法直接使用变形的属性,但是在类的内部可以直接使用 # 对象名.属性名取值的三种方法 1.用我们常用的__init__方法里的self取值 class Course:#恰好给我们提供了实现这种思路的方法 # #一种思路,python def __init__(self,price,period,name

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

我要走上我的写博之路,随便写写.有不对的地方欢迎提出. 好了,我就不多说什么了,干正经事...哈哈 一.封装(类的封装) 创建一个类(构造函数.属性和方法组成)---汽车 class Car{ type:string: constructor(type:string){ this.type=type; } derive(num:number=0){ alert(`dfdf`); } } new创建实例----丰田汽车 let car = new Car('丰田');二.继承extends,js这

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

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