构造器模式简单描述(看图):
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。构造器用于创建特定类型对象——准备好对象以备使用,同时接收构造器可以使用的参数,以在第一次创建对象时,设置成员属性和方法的值
1、创建对象
新对象创建的两种方法
var newObject={}; var newObject=new object();//object 构造器的简洁记法
2、基本Constructor
Javascript不支持类的情况下对象与Constructor,通过new关键字实例化一个对象,代码大概是这样的
function Car(model,year,miles){ this.model=model; this.year=year; this.miles=miles; this.toString=function() { return this.model+"has done"+this.miles+"miles"; }; }; //用法 //可以创建car新实例 var civic=new Car("Hona Civic",2009,2000); var mondeo=new Car("Ford Mondeo",2010,5000); console.log(civic.toString()); console.log(mondeo.toString());
3、带原型的Constructor
JavaScript 有prototype属性。及调用JavaScript构造器创建一个对象后,新对象就会具有构造器原型的所有属性。同过这种方式,可以创建多个Car对象(访问相同的原型)
funcion() Ca(model,year,miles){ this.model=model; this.year=year; this.miles=miles; //注意使用Object.prototype.newMethod 而不是Object.prototype是为了重新定义prototype对象 Car.prototype.toString=function(){ return this.model+"Has done" +this.miles+"miles"; }; }; //用法 var civic=new Car("Honda Civic",2009,20000); var momdeo=new Car("Ford Mondeo",2010,5000); console.log(civic.toString()); console.log(mondeo.toString());
现在toString()的单一实例就能够在所有Car对象之间共享了
下面给大家分享构造器constructor在实际项目中易错的题
class A { public int Avar; public A() { System.out.println("AAA"); doSomething(); } public void doSomething() { Avar = 1111; System.out.println("A.doSomething()"); } } public class B extends A { public int Bvar = 2222; public B() { System.out.println("BBB"); doSomething(); System.out.println("Avar=" + Avar); } public void doSomething() { System.out.println("Bvar=" + Bvar); } public static void main(String[] args) { new B(); } }
顺序是这样得,首先生成B就得先生成A,所以调用A的构造器,输出AAA,然后调用方法dosomething,注意:A的该方法被B覆盖,而你生成的是B的对象,所以它调用B的方法,由于BVAR目前没有给定值,所以自动初始化为0;
然后生成B对象,先初始化变量BVAR,然后调用构造器输出BBB,然后调用方法,这时BVAR已初始化,所以输出BVAR=2222,而对象A中变量AVAR由于没有调用对象A的方法dosomething,所以其值为0,则输出0
全部输出就如下:
AAA
Bvar=0
BBB
Bvar=2222
Avar=0
注意:初始化顺序,当继承时,先生成超类对象,生成对象时,先生成静态变量,然后是一般变量,然后调用构造器!当所有超类对象生成后,生成本对象,顺序一样! 当方法被覆盖时,调用目前对象的方法!这得注意。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 张艾嘉1997《滚石24K》24K金碟珍藏版系列[低速原抓WAV+CUE][1.1G]
- 宝可梦大集结开服有哪些免费时装获取 大集结免费时装获取大全
- 宝可梦大集结国服新手宝可梦怎么选 新手公测宝可梦推荐
- 宝可梦大集结国服公测福利获取方法大全 大集结开服福利有哪些
- AminaFigarova-SuiteForAfrica(2024)[24-96]FLAC
- 黑鸭子VS绿色森林2007-男女情歌对唱[首版][WAV+CUE]
- 群星《半个月亮爬上来》[DTS-WAV]
- 日本大雷少女COS赏
- 《怪猎荒野》PS5Pro性能表现一般 外媒:会有专门优化
- 《碟中谍8》首支预告公布!阿汤哥手扒飞机惊心动魄
- 孙露《忘不了》1:1黄金母盘直刻珍藏版[低速原抓WAV分轨][1G]
- 试音宝典《试机二十六号》K2HD母盘直刻[低速原抓WAV+CUE][1.1G]
- 群星《唱给女人的歌》24K德国HD金碟[WAV+CUE]
- 孙燕姿.2011-是时候【美妙音乐】【WAV+CUE】
- 苏芮.2003-回首·时代全经典2CD【华纳】【WAV+CUE】