精华内容
下载资源
问答
  • 创建一个对象用什么运算符?对象实体与对象引用有何不同?
    千次阅读
    2020-03-17 15:09:18

    创建一个对象用什么运算符?对象实体与对象引用有何不同?

    new 运算符,new 创建对象实例(对象实例在堆内存中),对象引用指向对象实例(对象引用存放在栈内存中)。一个对象引用可以指向 0 个或 1 个对象(一根绳子可以不系气球,也可以系一个气球);一个对象可以有 n 个引用指向它(可以用 n 条绳子系住一个气球)。

    更多相关内容
  • 接口可以创建对象、实例化吗?

    千次阅读 2021-01-05 17:31:27
    JDK8及以后: 除了定义全局变量和抽象方法以外,还可以定义静态方法、默认方法4. 接口中不可以定义构造器 意味着接口不能实例化5. Java开发中,接口通过让类去实现implement的方式去使用6. java类可以实现多个接

    一、interface的基础知识

    1. 接口使用interface来定义

    2. Java中 接口和类是并列的两个结构

    3. JDK7以前:只能定义全局变量和抽象方法:①全局常量:public static final的。 ②抽象方法: public abstract 的。 JDK8及以后: 除了定义全局变量和抽象方法以外,还可以定义静态方法、默认方法

    4. 接口中不可以定义构造器 意味着接口不能实例化

    5. Java开发中,接口通过让类去实现implement的方式去使用

    如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以去实例化
    如果实现类没有覆盖接口中的所有抽象方法,则此实现类仍为一个抽象类
    

    6. java类可以实现多个接口----->弥补了java单继承的局限性

    class AA extends BB implements CC,DD,EE
    

    7. 接口与接口之间可以继承,而且可以多继承

    二、接口不能实例化,为什么还会看到new interface?

    举例一

    FileFilter fileFilter = new FileFilter() {
    public boolean accept(File pathname) {
    String tmp = pathname.getName().toLowerCase();
    if (tmp.endsWith("." + "vb")) {
    return true;
    }
    return false;
    }
    };
    

    解释:FileFilter是一个接口。但这里面用到了匿名内部类。FileFilter() {。。。}一大段实现了(implements)接口,而实现接口的类为匿名类,然后再用new创建匿名类的对象。

    举例二

    interface A {
        public void f();
    }
    public class Test {
        A a = new A() {public void f() {return;}};
    }
    

    解释:A a的时候只是声明a为A类型,而new A() {public void f() {return;}};的时候实际上产生了一个匿名类(如果你查看一下编译后的结果,会发现有一个Test$1.class的文件,这个就是匿名类,后面的数字是自动编号的),而a所指的具体对象就是Test$1这个类型的对象。

    可以将上面的代码改写成普通的实现接口的方式

    interface A {
        public void f();
    }
    
    class NiMingB implements A{
    	public void f() {return;}
    }
    
    public class Test{
    	NiMingB niming = new NiMingB();	
    }
    

    总结:接口无法直接创建对象,但是实现了接口的类可以创建对象,我们实现了某一个接口,就相当于创建了这个接口的一个子类,接口就是这个类的父类,而父类引用 是可以指向之类对象的。所以我们不是创建的不是接口对象,而是实现了该接口的类的对象,也就是接口的子类对象。

    展开全文
  • 这种情况搞不懂,创建对象成功了,是只要把抽象方法给具现化了就能创建吗? ``` abstract class Driver { public abstract void drive(); } public class Test { public static void main(String[] args) ...
  • 抽象类能创建对象吗?

    千次阅读 2020-07-15 00:27:20
    抽象类是不能创建对象的原因: 1.子类更具体,父类更抽象,直接创建父类对象本身没有意义。 2.如果创建的是父类对象再调用方法的时候,调用的父类中的方法,而非子类的方法,它违背了多态的这种思想和设计 3.因为...

    什么是抽象类呢?

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

    抽象类是不能创建对象的原因:

    1.子类更具体,父类更抽象,直接创建父类对象本身没有意义。
    2.如果创建的是父类对象再调用方法的时候,调用的父类中的方法,而非子类的方法,它违背了多态的这种思想和设计
    3.因为父类引用指向子类对象时,调用的方法是子类重写的方法,一般父类中的描述不够具体,并不是说抽象类的构造方法没有意义,那么在创建子类对象时需要先调用父类的构造方法。
    4.抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)
     

    展开全文
  • JS创建对象的几种方法

    千次阅读 2018-07-29 17:41:16
    自己认为目前能较好理解的创建对象方法,可能在某些方面不是最优的方法 // 1. 创建使用函数创建(工厂模式) function Person(age,name){ this.age = age || void 0; //void 0 相当于 undefined ,,自己设置好...

    自己认为目前能较好理解的创建对象方法,可能在某些方面不是最优的方法

    // 1. 创建使用函数创建(工厂模式)
    	function Person(age,name){
    		this.age = age || void 0;                    //void 0 相当于 undefined  ,,自己设置好undefined更踏实
    		this.name = name || void 0;
    		this.print = function(){                      //为Person类添加一个方法
    			console.log(this.age);                    //输出Person类的age
    			console.log(this.name);                  //输出Person类的name
    		};
    	};
    	Person.prototype.gender = '男' ;                 //prototype,属性使您有能力向对象(类)添加属性和方法。 类外部添加Person属性
    	Person.prototype.address = function() {         //类外部添加Person方法
    		console.log('北京市');
    	};
    	// 创建一个实例对象
    	var youngperson = new Person();               //或者  var youngperson = new Person('张三',12);
    	youngperson.print();                          //输出 0 0
    	console.log(Person.prototype.gender);         //输出男
    	youngperson.address();                        //输出 北京市
    	youngperson.test = 'good';                    //为某个对象添加属性
    	console.log(youngperson.test);                //输出good

    以下为转载

    转载来源   https://www.jb51.net/article/91463.htm

    JS是基于对象的语言,可以使用面向对象思想模拟JAVA|C++之类的面向对象语言。
     •面向过程 
    ◦关注解决问题的步骤

     •面向对象 
    ◦关注的是解决问题的所需要的对象(内容和角色),然后根据业务逻辑按一定规则调用相关方法

    对象分为系统对象和自定义对象两种。我们可以通过调用系统构造函数来创建出系统对象,如:array|date等。自定义对象必须自己创造,无法利用系统函数来创造。

    javascript创建对象 

    一、直接创建

     //直接创建
         //JS创建对象
         //1:创建空对象
             var person1 = new Object();
         //2:将该对象所需要的属性、方法加进去
             person1.name ="ailer" ;
             console .log(person1.name);
             person1.gender = "male";
         //3:该对象添加的方法|(函数)
             person1. manager= function (){
               console .log("Ailer is my English name" );
            }
         //4:调用对象方法:对象.方法名();
             person1.manager();
    
         //函数|方法?函数属于对象时,该函数属于这个对象下的方法;通过方法名来调用该函数;
         //变量|属性 ?当变量属于某一个对象时候, 该变量就是这个对象下的方法。通过属性名来调用变量。
    
          //增
             person1.age ="6" ;
          //改
             person1.name ="lemon" ;
          //查
             console .log(person1.name);
         //删
             delete person1.age;
             console .log(person1.age);==> undefined
    
          //引用类型,存储的是地址
          //基本类型:存储的是值 标志位
    
         /*  var arr1 = [1,2,3,4]
            var arr2 = [5, 6, 7,9];
            var arr2 = arr1;//
            arr2[0]=10;//更改arr2里面的值,arr1也更改
            alert(arr1[0]);//====>10 引用类型*/
    
            var per2 = new Object();
            per2.name = "Relia";
            per2.age = "18";
            per2.gender = "femal";
            per2.hobby = "lemons";
    
             //1:通过.(点语法)访问属性
             //2:通过[](方括号)访问对象的属性;方括号中必须是属性字符串或保存属性字符串的变量|遍历属性的时候才使用方括号
             var n = "name"
             //console.log(per2["name"]);//双引号
    
             console .log(per2[n]);
             for ( var property in per2) {
    //          console.log(per2[property]);
             }
    

    虽然直观,但是创建多个对象的时候,代码冗余

    二、使用函数创建(工厂模式)

    为了解决多个类似对象声明的问题,我们可以使用一种叫做工厂模式的方法,这种方法就是为了解决实例化对象产生大量重复的问题。

    //定义构造函数      
     function createPerson ( name, age) {
    //创建一个新的空对象
               var person = new Object;
    //添加属性|方法
               person.name = name;
               person.age = age;
               person. manager = function() {
                  console .log("ai" );
               }
    //返回
               return person;
            }
    
             var per1 = createPerson( "ailer", 12 );
             console .log(per1.name);
    
            var per2 = createPerson( "lemon", 23 );
            console .log(per2.age);
            console.log(per2 instanceof Object);//true
            console.log(per2 instanceof createPerson);//false//无法区分该对象类型
            console.log(per2.manager==per1.manager);//false 可得出per1和per2各自开闭空间
    
    

    优:批量创建同类实例
    缺:实例用同类属性, 造成内存浪费无法公,且无法区分该对象的类型

    三、 字面量创建

    优:简单直接
    缺:无法批量构建同类对象 

    //字面量创建的对象使用constructor属性不会指向实例,而是指向object
     //使用字面量创建
           var per1 = {
            name:"Ailer",
             constructor:per1,
            age:12,
            gender:"female",
            hobby:"play",
            eat:function(){
              console.log(this.name);
            }
           }
           per1.eat();//ailer
           per1.name="lemon";
           per1.eat();//lemon
           console.log(typeof per1);//Object
           console.log(per1.constructor==Object);//true

     四、new+构造函数

    //构造函数创建对象,其子对象用instanceof不识别,所有采用new+obj创建
            //对象识别了,但是仍然浪费一些代码区;==>产生原型创建
            //创建js对象 new+构造函数
            //1:创建构造函数 |通常首字母大写
            function CreatePerson( name , age){
              //2:把对象的属性|方法挂靠在this指针身上, 当调用该函数创建对象时,this指针就指向这个新对象;
              //这个this就添加给这个对象
              this.name = name;
              this.age = age;
              /*this.speak = function(){
                //此处this也指向创建对象
                console.log(this.name+" hello");
              }
            }
    
          /* CreatePerson.prototype.gender = "20";
           CreatePerson.prototype. ea = function(){
              console .log(this.name+ "sfd" );
           }*/
    
    //      __proto__:是:实例对象中的原型属性, 指向对应构造函数对应的原型对象
    //      [[prototype]]
            //调用
            var per1 = new CreatePerson( "ailer", "20" );
            var per2 = new CreatePerson( "relia", "18" );
            console .log(per1 instanceof CreatePerson); //==true
            console .log(per2 instanceof CreatePerson); //==>true
            console .log(per1.speak== per2.speak); //==false说明系统开辟了两个不同的代码区,造成了内存浪费.
    
    
    

    字面量创建一个比较方便,所以产生构造函数,普通构造函数(工厂模式),子对象instanceof不识别且内存浪费,用new+构造函数,子对象识别了,但仍有部分代码重复,内存浪费,产生原型代码解决。

    五、原型模式

          function CreateAnimal(name, age) {
            //1.2:把外部参数绑定实例属性
            this.name = name;
            this.age = age;
          }
          //1.3把相同的属性,绑定在原型上(原型属性,原型方法)
          CreateAnimal.prototype.gender = "male";
          CreateAnimal.prototype.style = function() {
            console.log(this.name + " ailers");
          };
          //2:调用构造函数创建对象
          var cat1 = new CreateAnimal("xiaohua", "2");
          var cat2 = new CreateAnimal("xiaohua", "2");
          cat1.style();
    
          console.log(cat1.style==cat2.style);//方法引用地址一样,将属性放到原型对象中,节约地址
    
          //instanceof可以来判断对象属于哪一个【函数】
          //constructor 建造者 也可以用来判断对象属于哪个【构造函数】 【常】 
          //实例对象保存一个 constructor属性指向它的构造函数
          //instanceof and constructor 区别
          console.log(cat1 instanceof CreateAnimal);//true
          console.log(cat1 instanceof Object);//true
    
          console.log(cat1.constructor == CreateAnimal);//true
          console.log(cat1.constructor == Object); //==false
    
          //构造函数的原型也有constructor属性指会构造函数
          console.log(CreateAnimal.prototype.constructor == CreateAnimal);//true
    
          //in判断该属性是否存在这个对象中,这个属性为实例属性或原型 
    //           alert("name" in cat1)//true
    //           alert("gender" in cat1);//true
    
          //hasOwnProperty:来判断某一个属性到底是实例属性,还是继承自原型属性 if 是 为true, else不存在|不是返回false;
          console.log(cat1.hasOwnProperty("aaa"));//false 不存在的属性返回为false
          console.log(cat1.hasOwnProperty("name"));//true 实例属性
          console.log(cat1.hasOwnProperty("style"));//false 原型属性返回为false
    
          //遍历属性找原型属性
    
          //判断参数是否为原型属性  工具类
          console.log(isPrototype("gender", cat1));//true
          function isPrototype(proString, obj) {
            if(proString in obj) {
              if(!obj.hasOwnProperty(proString)) {
                return true;
              } else {
                return false;
              }
            } else {
              return false;
            }
          }
          /*
    function isProperty(object, property) {//判断原型中是否存在属性
       return !object.hasOwnProperty(property) && (property in object);
    }*/
    
    

    动态原型模式

    //构造函数中初始化原型
    function per(name, age, gender) {
            this.name = name;
            this.age = age;
            this.gender = gender;
            //只在初始化原型的时候执行一次
            if(typeof this.sayName != "function") {
              Person.prototype.sayName = function() {
                alert(this.name);
              }
            }
          }
    
    展开全文
  • 接口可以创建对象

    万次阅读 2015-05-31 16:11:33
    一直以来,我一直认为接口是不可以创建对象的,随着学习的不断深入发现这是片面或错误的。接口存在的意义就是支持java的多态机制。java规定接口interface不能直接使用new关键字来创建对象,但并没有它不能创建对象。...
  • Java创建对象详解:Java创建对象的几种方法

    万次阅读 多人点赞 2019-05-10 20:01:32
    Java 对象的生命周期包括创建、使用和清除,本文详细介绍对象的创建,在 Java 语言中创建对象分显式创建与隐含创建两种情况。 显式创建对象 对象的显式创建方式有 4 种。 1. 使用 new 关键字创建对象 这是常用的创建...
  • 抽象类为什么不能创建对象

    千次阅读 2020-07-18 21:37:02
    创建对象 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类往往...
  • JavaScript创建对象的4种方法

    千次阅读 多人点赞 2018-11-28 15:02:24
    使用对象可以使程序更加整洁 通过Object()方法来创建 Object()是JavaScript内部的对象,使用Object创建对象的语法: 我们通过Object创建的一个Dog对象,这个对象有name,color,eat属性;并且给这个对象定义...
  • C/C++创建对象的两种方式

    千次阅读 2016-12-24 15:58:49
    刚学C++肯定被其创建对象搞的糊里糊涂,其不像Java那样直接通过new就可以创建对象了,而且还不需要人为的去回收,但C++却不行其有两种方式创建对象:1、通过new创建类对象CTest* pTest = new CTest();delete pTest;...
  • Numpy简易教程1——创建数组对象

    万次阅读 2021-08-08 22:24:40
    创建数组对象 NumPy提供了两种基本的对象:ndarray(N-dimensional Array Object)和ufunc(Universal Function Object)。 ndarray(下文统一称为数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行...
  • 使用对象字面量创建对象

    千次阅读 2016-08-14 16:03:45
    今天在学习《js高程》时看到了使用对象字面量创建对象的表示法,了解到对象字面变量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程,举一个简单的例子var person = {name : "tom",age : 21};...
  • 主要处理的问题:统计一个类中创建对象的个数 1、在类中设置一个static的int变量,每次创建一个对象时,count加1。 staic int count=0; Person(){++count;} 2、 同时要让对象的id递增,只需把count加1的...
  • JavaScript如何创建一个对象

    万次阅读 2017-02-19 10:04:56
    我们可以利用JavaScript的语法特征,以类的思想来创建对象。 方法一:原始方法 代码如下: var obj = new Object(); obj.name = "Kitty";//为对象增加属性 obj.age = 21; obj.showName = function () {//为对象...
  • 关于Java中使用new关键字创建对象

    千次阅读 2019-10-28 20:15:56
    在这条语句左边是在栈区创建一个对象的引用,就相当于告诉计算机我需要一个List类型的变量,但是我没有告诉它这个变量我要用来干什么,它的大小是多少。这时计算机只是创建了一个List集合的引用...
  • js实战案例--创建一个电脑对象

    千次阅读 2022-03-26 14:40:26
    一、创建一个电脑对象,该对象要有颜色、重量、品牌、型号,可以看电影、听音乐、打游戏和敲代码。 <script> function Computer(color,weight,id){ this.color = color; this.weight = weight; this.id =...
  • scala不使用new关键字创建对象实例

    千次阅读 2017-07-17 22:23:41
    在scala中,scala不使用new关键字创建对象实例,一般有2中方法: 1. 为类创建伴生对象,并在伴生对象内按照所需的构造函数签名定义一个apply方法; 2.将类定义为case类。 1)用apply方法创建一个伴生对象: ...
  • 【C++】创建对象之new关键字

    万次阅读 多人点赞 2018-11-04 15:20:44
    new创建对象,使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似乎更加高...
  • Java创建JSON对象

    千次阅读 2019-08-18 13:40:41
    Java创建JSON对象 private void getJson(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=response.getWriter();//servlet的输出流,在...
  • 实际语义是实例化一个实现该接口的匿名内部类,接口本身是用来抽象的,实例化接口没有意义。 2.实例化实际意义是在jvm的堆中开辟出一块内存空间,比如Student s = new Student();此处声明Student对象s,并且实例化...
  • class Person{ String name; int id; public Person(int id,String name) { this.name=name; this.id=id;...//count被所有对象共享 { count++; } } public class Demo46 { pub...
  • 在学习Java反射的过程中,遇到了一点疑惑的地方 //1.... 利用Class对象的newInstance方法创建一个类的实例 Object obj = clazz.newInstance(); 平常理解的对象和实例都是一个东西,将一个对象实...
  • 今天想记录图形学知识的时候需要用到公式编辑器,就打开了word,...凭着不服输的精神我卸载了office2016,打开时对象中是有公式编辑器3.0选项了,可是提示我 “此对象创建于Equation中,此应用程序不能用来打开.......
  • Spring是使用反射创建对象,而且可以指定对象的生命周期, beanan生命周期 scope控制bean的生命周期,scope的取值有5种取值: 在Spring 2.0之前,有singleton和prototype两种; 在Spring 2.0之后增加另外三种:...
  • 如何将对象中的信息永久保存  1.将来将对象信息存入数据库  2.java 中提供的序列化方式来永久保存数据 序列化流的概述  所谓的序列化:就是把对象通过流的方式存储到文件中.注意:此对象 要重写Serializable ...
  • ECMA-262把对象定义为:”无需属性的集合,其属性可以包含基本值、对象或者函数。”严格来讲,这就相当于说明对象是一组没有特定顺序... 创建自定义对象最简单的方式就是创建一个Object的实例,然后再为他添加属性和方
  • new创建对象,对象保存在堆还是栈? -->堆内存是用来存放由new创建的对象和数组,即动态申请的内存都存放在堆内存 -->栈内存是用来存放在函数中定义的一些基本类型的变量和对象的引用变量 例子:局部变量...
  • new创建对象,使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似乎更加高...
  • java 创建hashmap对象

    万次阅读 2016-11-24 16:13:50
    使用java 创建hashmap 对象,转换成json格式存入本地redis,再从redis取出 import redis.clients.jedis.Jedis; import java.util.*; public class Hash_map { public static void main(String[] args) { //连接...
  • 【C++】C++类的定义和对象创建

    千次阅读 2018-10-11 12:38:43
    类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。     在面向对象的编程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,629,309
精华内容 651,723
关键字:

哪个可以用来创建对象