面向对象

面向对象——构造函数与析构函数(多语言比较——整合自网络)

心已入冬 提交于 2019-12-07 07:39:10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 我们在创建和销毁对象时需要执行一些任务。例如,在创建对象时给属性赋值,在对象销毁时关闭数据连接等,这时就需要构造函数和析构函数。 c++ 包含 构造函数 和析构函数的C++程序。 #include<string> #include<iostream> usingnamespacestd; classstud //声明一个类 { private : //私有部分 intnum; charname[10]; charsex; public : //公用部分 stud(intn,charnam[],chars) //构造函数 { num=n; strcpy (name,nam); sex=s; } ~stud() //析构函数 { cout<< "studhasbeendestructed!" <<endl; //通过输出提示告诉我们析构函数确实被调用了 } voiddisplay() //成员函数,输出对象的数据 { cout<< "num:" <<num<<endl; cout<< "name:" <<name<<endl;

php面向对象之构造函数和析构函数

浪子不回头ぞ 提交于 2019-12-07 07:38:57
php面向对象之构造函数和析构函数 简介 php面向对象支持两种形式的构造函数和析构函数,一种是和类同名的构造函数(php5.5之前),一类是魔术方法(php5.5之后)。与类名相同的构造函数优先级比魔术方法低。 php有一类很神奇的方法,这些方法是保留方法,通常不会在外部被显式调用,他们使用双下划线(__)开头,他们被称为魔术方法(Magic Methods)。php官方也不建议定义其他双下划线开头的方法。 这次介绍最常见的魔术方法:构造函数和析构函数。 1. 构造函数(__construct) void __construct ([ mixed $args [, $... ]] ) 构造函数:拥有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象前做一些初始化服务。 注意:   1. clone并不会调用构造函数    2. 如果子类定义了构造函数,则不会隐式调用父类的构造函数   3. 子类的构造函数允许和父类的构造函数参数不一致   4. 如果子类没有定义构造函数,php会尝试寻找父类的构造函数   5. 如果父类没有定义构造函数,使用parent关键字显式调用父类构造函数,会导致致命错误 1 <?php 2 3 class P{ 4 5 public function __construct(){ 6 echo __CLASS__ . "\n"; 7 }

面向对象的编程——构造函数和析构函数(1)

杀马特。学长 韩版系。学妹 提交于 2019-12-07 07:34:57
面向对象的编程——构造函数和析构函数(1) 构造函数与类同名我们以此来标识构造函数为了声明一个缺省的构造函数,构造函数上惟一的语法限制是它不能指定返回类型甚至void 也不行,C++语言对于一个类可以声明多少个构造函数没有限制,只要每个构造函数的参数表是惟一的即可。 析构函数是一个特殊的由用户定义的成员函数当该类的对象离开了它的域或者delete表达式应用到一个该类的对象的指针上时析构函数会自动被调用,析构函数的名字是在类名前加上波浪线(~),它不返回任何值,也没有任何参数,因为它不能指定任何参数。所以它也不能被重载。尽管我们可以为一个类定义多个构造函数但是我们只能提供一个析构函数,它将被应用在类的所有对象上。 #include <iostream> #include <string> #include <vector> using namespace std; class B { private: int data; public: B() { cout<<"default constructor"<<endl; } ~B() { cout<<"destructed"<<endl; } B(int i):data(i) { cout<<"constructed by parameter"<<data<<endl; } } ; B Play(B b) { return b; }

用例的具体写法

≯℡__Kan透↙ 提交于 2019-12-06 22:51:56
1. 引言 前面我们学习了518需求分析方法,而一个完整的用例,正好体现了518需求分析方法中涉及的内容。 2. 用例元素 一个完整的用例应该包含如下几个部分: 2.1 【用例名称】 一般情况下,用例的名称即需求的名称。 2.2 【场景】 场景即用例发生的环境,正好对应5W中的3个W:Who、Where、When 2.3 【用例描述】 描述详细的用例内容,对应5W中的What和How,即用户应该怎样做,以及每个步骤中的输出。但并不要求每个步骤都一定有输出,可以有也可以没有,也可以有多个。 2.4 【用例价值】 描述用例对应的客户价值,对应5W中的Why。 2.5 【约束和限制】 即整个需求流程中相关的约束和限制条件,对应518方法中的8C。 3. 样例分析和步骤 我们来看一个简单的样例:POS机。 3.1 【第一步:正常处理】 【用例名称】 买单 【场景】 Who :顾客、收银员 Where :商店的收银台 When :营业时间 【用例描述】 顾客携带选择好的商品到收银台; 收银员逐一扫描商品条形码,系统根据条形码查询商品信息; 扫描完毕,系统显示商品总额,收银员告诉顾客商品总额; 顾客将钱交给收银员; 收银员清点钱数,输入收到的款额,系统给出找零的数目; 收银员将找零的钱还给顾客,并打印小票; 买单完成,顾客携带商品和小票离开; 【用例价值】 顾客买完单以后,就可以携带商品离开

Java面向对象之构造器

你说的曾经没有我的故事 提交于 2019-12-06 21:01:32
目录 Java面向对象之构造器 利用构造器确保初始化 构造器重载 Java面向对象之构造器 利用构造器确保初始化 初始化问题是关系编程方式是否安全的一个重要的问题。 功能 :在创建对象时执行初始化。 在Java中,每个类至少有一个构造器 。格式如下: [修饰符] 构造器名(参数列表){ ...执行体 } 这时,突然迷惑,之前写过的代码里都没有构造器的说法呀,是怎么回事呢? 先看下面的语句: Student s0 = new Student(); 这是我们之前经常写的,我们管他叫做创建对象,并让引用变量指向这个对象的过程(类的实例化)。 在执行 new Student(); 语句时,系统就会为对象分配内存空间,并调用相应的构造器,执行响应的执行体,确保对象在被我们操作之前,就已经正确初始化。 可是构造器在我们之前的代码中,还是没有出现构造器的影子啊。这是因为,我们在设计类时, 如果没有定义任何的构造器的话, 系统默认为类提供默认构造器(即无参构造器),执行体为空。 注意 : 对象在构造器执行体之前就已经被建立,只不过这个对象只能在内部被 this (关于this的用法之后会有专门的篇幅总结)引用。 只有在构造器执行体结束之后才作为返回值被返回。 new表达式确实返回了新建对象的引用,但构造器本身是没有返回值的。 关于构造器的访问修饰符 : 如果允许系统中任何位置的类来创建该类的对象

里氏替换原则——面向对象设计原则

别等时光非礼了梦想. 提交于 2019-12-06 14:23:48
里氏替换原则的定义 里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在 1987 年的“面向对象技术的高峰会议”(OOPSLA)上发表的一篇文章《数据抽象和层次》(Data Abstraction and Hierarchy)里提出来的,她提出: 继承必须确保超类所拥有的性质在子类中仍然成立(Inheritance should ensure that any property proved about supertype objects also holds for subtype objects)。 里氏替换原则主要阐述了有关继承的一些原则,也就是什么时候应该使用继承,什么时候不应该使用继承,以及其中蕴含的原理。里氏替换原是继承复用的基础,它反映了基类与子类之间的关系,是对开闭原则的补充,是对实现抽象化的具体步骤的规范。 里氏替换原则的作用 里氏替换原则的主要作用如下。 里氏替换原则是实现开闭原则的重要方式之一。 它克服了继承中重写父类造成的可复用性变差的缺点。 它是动作正确性的保证。即类的扩展不会给已有的系统引入新的错误,降低了代码出错的可能性。 里氏替换原则的实现方法 里氏替换原则通俗来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。 也就是说:子类继承父类时

面向对象的一些关键字

我们两清 提交于 2019-12-06 07:04:13
堆 放 new (对象);栈 放局部变量;数据段 放类变量和常量;代码段 放方法的定义。 基本类型改的是数据,引用数据改变的是指向(地址) 关键字: This: 1、代表当前对象本身 2、 在构造器中可以使用 this([ 参数 ]) 调用本类的其他构造器 3、 有时候需要把当前调用对象进行传递 ,那么就可以使用this替代当前调用对象 Super: 1、指代父类 2、super() 调用父类的构造器 3、super() 如果放在子类构造器中调用 , 只能放在子类构造器代码的第一行 4、 使用 super.xxx() 可以在子类中调用父类中的方法 Static : 1. 静态的属性和静态的方法属于整个类,不是属于某个对象的 2. 静态的值只有一个 ( 基本数据类型可以看出此特点 ) 3. 静态的值只会初始化一次 ( 引用数据类型 ) 4. 静态属性 , 方法或者静态块会在 jvm 加载的时候就加载 5. 一般情况下 , 静态的常量属性 , 我们一般写为 public static final 数据类型 大写常量名 = 值 6 、静态方法下不能用 this 执行顺序: static (静态的) -- 静态块 {}-- 构造器 Javabean : 1 、所有的属性都是 private (私有的) 2 、为每个属性建立 setter 和 getter 方法 3

多态在面向对象中的意义以及带来的好处

孤街醉人 提交于 2019-12-06 05:43:34
多态的概念:相同的行为,不同的实现 什么是静态多态?什么是动态多态? 静态多态 :编译时就已经确定了结果,例如重载和重写 动态多态 :运行时确定结果, 动态多态是依赖什么技术实现的? 继承 重写 向上转型(父类引用指向子类对象 动态多态的好处是什么? 减少了代码的耦合性,后期需要修改的时候只需要添加内容,不用修改之前已经定义的代码。 可以扩展的知识点: 接口的引用也可以指向实现类的对象; 反射实现动态产生对象; Spring完成IOC注入; 桥梁模式、装饰器模式、策略模式等常见设计模式; 聚合组合原则、依赖倒转原则等常见设计原则。 来源: https://www.cnblogs.com/liqking/p/11964523.html

设计模式之美学习(二):到底什么是面向对象?

二次信任 提交于 2019-12-06 03:26:41
提到面向对象,相信很多人都不陌生,随口都可以说出面向对象的四大特性:封装、抽象、继承、多态。实际上,面向对象这个概念包含的内容还不止这些。 什么是面向对象编程和面向对象编程语言? 面向对象编程的英文缩写是 OOP ,全称是 Object Oriented Programming 。对应地,面向对象编程语言的英文缩写是 OOPL ,全称是 Object Oriented Programming Language 。 面向对象编程中有两个非常重要、非常基础的概念,那就是类( class )和对象( object )。这两个概念最早出现在 1960 年,在 Simula 这种编程语言中第一次使用。而面向对象编程这个概念第一次被使用是在 Smalltalk 这种编程语言中。 Smalltalk 被认为是第一个真正意义上的面向对象编程语言。 什么语言才算是面向对象编程语言呢?如果非得给出一个定义的话,可以用下面两句话来概括。 面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石。 面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。 一般来讲,面向对象编程都是通过使用面向对象编程语言来进行的,但是,不用面向对象编程语言

面向对象介绍

萝らか妹 提交于 2019-12-05 14:54:25
面向对象 一、什么是面向对象 1.1 面向过程编程思想 1.2 面向对象编程思想 二、如何产生对象 2.1 什么是类 2.2 如何定义类 2.2.1 函数的名称空间和类的名称空间的区别 三、什么是对象 2.3 类的操作 四、类和对象的操作:增、删、查、改 4.1 查看类和对象的名称空间 4.2 类和对象的属性(类中的变量)操作 4.2.1 查找类和对象的属性 4.2.2 增加类和对象中的属性 4.2.3 修改类和对象中的属性 4.2.4 删除类和对象中的属性 五、类中的数据属性(类中的变量) 六、类中的方法(类中的函数) 七、对象属性的查找顺序 八、对象绑定方法的特殊之处 九、一切皆对象 TOC 面向对象 一、什么是面向对象 注意:编程思想仅仅是一门思想,与任何技术无关。 面向对象是一门编程思想 1.1 面向过程编程思想 核心是 过程 二字,过程指的是解决问题的步骤,即先干什么再干什么 基于该编程思想编写程序,就好比在设计一条工厂流水线,一种机械式的思维方式。 优点 将复杂的问题流程化,进而简单化 缺点 牵一发而动全身,程序的可扩展性差 1.2 面向对象编程思想 核心是 对象 二字,对象指的是 特征与技能 的结合体。 基于该编程思想编写程序,就好比在创造世界,一种 上帝式 的思维方式。 优点 可扩展性高 缺点 编写程序的复杂程度比面向过程高 二、如何产生对象