实例化(instantiate)是指在面向对象的编程中,把用类创建对象的过程称为实例化。是将一个抽象的概念类,具体到该类实物的过程。实例化过程中一般由类名 对象名 = new 类名(参数1,参数2...参数n)构成。

简介

在面向对象的编程中,通常把用类创建对象的过程称为实例化,其格式如下:

如 Date date=new Date();就是用日期类创建了一个日期的对象,就叫对象的实例化。

多数语言中,实例化一个对象就是为对象开辟内存空间,或者是不用声明,直接使用new 构造函数名,建立一个临时对象。

例:Java

public class A{public static void main(String[] args){B b = new B();//实例化b.print();}
}class B{public void print(){System.out.println("Hello,World!");}
}

例: c#

namespace test
{class A{public int Sub(int a){return a++;}}class B{public void Main(String[] args){int p = (new A()).Sub(1);System.Console.WriteLine(p);System.Console.ReadKey();}}
}

使用方法

以PHP为例。

类不同于函数,定义完之后无法直接使用,因为类只是一个抽象的概念,需要通过关键字new来实例化类,才可以使用。类实例化的语法格式如下:变量名=new 类名([构造函数])。其中,变量名可以为任何PHP变量的名称,构造参数取决于类的构造函数,若无构造函数,则圆括号中为空。

实例化一个类后即可使用该类。

例如:

<?phpclass People{public $name;  public function introduceMySelf(){echo '内容',$this->name.‘内容2’;}}$p=new People();?>

如果要在类外使用类的属性和方法(前提是该属性或方法是可访问的),需要使用操作符->,语法格式如下:

  • 实例化的类变量名->属性名;

  • 实例化的类变量名->方法名([方法参数]);

使用类的方法与调用函数一样,在圆括号中给出函数参数(没有参数时当然就不用写了)。需要特别注意的是,在使用操作符->引用属性时,属性名是不加符号$的。

类模板与函数模板实例化

函数模板实例化

以C++为例,C++标准除支持隐式实例化模板函数外,还支持显式实例化。其语法格式如下:

template 返回类型 函数名<类型实参列表>(实参类型列表);

例如,若有以下函数模板:

template<typename T>
void swap(T a ,T b){T tempt=a;a=b;b=tempt;
};

那么,以下语句是该函数模板的一个显式实例化:

template void swap<int>(int,int);

说明:template关键字之后不再跟"<>",否则就成了函数模板的特化。

类模板的实例化

与函数模板相似,类模板只是一个虚的“图纸”。只有在编译期间,编译器根据给定的模板类型实参生成实实在在的模板类,这才是真实存在的类代码。函数模板实例化后会生成模板函数,类模板实例化后则会生成模板类。

在为不同模板实参类型实例化生成模板类时,编译器会为每种数据类型都生成一个模板代码的副本,所以结果会导致代码体积增大。因此,在实际调用过程中,编译器会有选择的实例化类模板中的成员函数,只有那些被调用了的函数,它对应的类模板成员函数才会被编译器实例化并生成。这就是类模板的“选择性实例化”。

声明、初始化、实例化的区别

声明是指使用一个对象的时候,先定义属于哪个类型,比如string _str;

_str是声明(定义)了一个string类型的对象。

初始化可以理解为给声明的对象赋值的过程。string _str ="hello";

_str现在已经被初始化了,实例化后它具有“hello”这个值。

实例化是类用到的,A a = new A();当new的时候为对象分配内存,这个过程是对象的实例化。

总结:

声明,只生成对象不赋值的过程

初始化,是给对象赋值的过程

实例化,是使用new为对象分配内存的过程

什么是实例化,实例化、声明、初始化的区别相关推荐

  1. 实例化和初始化的区别

    一.实例化和初始化的区别 实例化:只是单纯的把对象 new 一下就行了 例:Student st=new Student();这样就行了 初始化:是在实例化之后完成的,先实例化对象,只给对象属性赋值, ...

  2. Spring 循环引用 ——理解singleton与prototype初始化的区别

    所谓的循环引用,就是A依赖B,B又依赖A,A与B两个对象相互持有.像下面这种情况: class A {B b;public A(B b) {this.b=b;} }class B {A a;publi ...

  3. python释放变量内存_Python尚学堂高淇|1113引用的本质栈内存,堆内存,内存的示意图,标识符,变量的声明初始化,垃圾回收机制...

    011-引用的本质-栈内存和堆内存-内存的示意图在Python当中,变量也成为:对象的引用,因为,变量的存储就是对象的地址变量通过地址引用了对象变量位于堆内存(压栈,出栈等细节,后续再介绍)对象位于: ...

  4. es5和es6声明类的区别/es5和es6继承的区别

    // es5和es6声明类的区别,es5没有统一语法规范.es6有统一写法规范 start. // es5声明"类"的语法--伪类 // function Person(name, ...

  5. java初始化实例化_Java 类初始化和实例化以及多态理解

    前言 本篇主要讲解了类的初始化.实例化.静态代码块.构造器.getClass().super.this 等相关的知识点,做一个总结. demo 老规矩,看代码: Father.java public ...

  6. java实例化字符串两种方式区别

    一:实例化字符串对象的两种方式的区别 这个知识点是面试中的一个经久不衰的问题,.也是一个比较麻烦的问题,对于许多同学来说也是难点,本次课我们会详细的分析.上次课说了创建字符串对象的两种方式:直接赋值( ...

  7. C/C++ 中变量的声明、定义、初始化的区别

    今天突然思考到这样的一个问题,发现已经在学习或者编写程序的时候压根就没有注意到这些,经过比较这些还是有很大的区别的. int i;//声明 不分配地址空间 int j=1:// 转载于:https:/ ...

  8. java 延迟实例化_延迟初始化Spring Bean的几种方式

    XML 配置: Java 注解:@Lazy(true) Spring 中默认是非延迟加载Bean的,也就是提前把Bean初始化好,用的时候直接用. 优点是运行的时候比较快(提前初始化了,直接用). 缺 ...

  9. String实例化两种方式的区别

    如上图所示,第一种直接赋值的是str1地址直接指向常量池中的"abc",假如"abc"的地址值为1234,那么str1所存的地址值就是1234.而注意str2存 ...

最新文章

  1. NYOJ题目1048破门锁
  2. 上传图片显示扫描效果html5,JS+HTML5实现上传图片预览效果完整实例【测试可用】...
  3. 计算机视觉Computer Vision的尴尬---by林达华
  4. [转]Linux环境下段错误的产生原因及调试方法小结
  5. App设计灵感之十二组精美的插画引导页设计案例
  6. 作为现代计算机理论的基础的,作为现代计算机理论基础的冯·诺依曼原理和思想是()。...
  7. bzoj 2257[Jsoi2009]瓶子和燃料 数论/裴蜀定理
  8. Eclipse中Jar包的反编译(通过jar包查看源码)
  9. ASP.NET Core中返回 json 数据首字母大小写问题
  10. 远程控制软件也要有plan B备选方案
  11. 佛大计算机控制系统期末试卷,[设计]统考计算机模拟练习试题及答案基础知识...
  12. 条形码生成软件如何设置条形码数据的字号大小
  13. 【PM模块】基础概念简介
  14. @Transient注解
  15. WiFi密码破解亦或是WiFi热点软件?
  16. 基于java SSM框架的医院体检管理系统
  17. 设计模式:建造模式(组装电脑)
  18. QLU_ACM 2021 专题训练(一)题解 [暴力、排序、贪心、二分]
  19. 牛客小白月赛65个人题解A-E
  20. python柱形图颜色_pyplot/matplotlib条形图,填充颜色取决于值

热门文章

  1. 2450 Problem B 树的高度
  2. 报错:com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator;
  3. Oracle 通过 SID 查询 SESSION 和 SQL 信息
  4. 四色定理已利用计算机证明,四色定理已利用
  5. 简单的会计实际业务案例
  6. Babel 学习与使用
  7. 图论基础知识(二) —— 路与连通
  8. 毕业生选题系统 c语言,[内附完整源码和文档] 毕业设计选题系统
  9. 欧洲杯决赛谁能称王 葡萄牙支持率力压法国
  10. 代码统计分析工具SourceCounter