精华内容
下载资源
问答
  • 面向对象的语言有一个标志,那就是他们都有类的概念,通过类可以创建任意多...但是ECMAScript没有类的概念,但是我们可以通过其他方式来模拟面向对象的类。 //一个简单的对象 varobj=newObject(); varobj={}; o...

        面向对象的语言有一个标志,那就是他们都有类的概念,通过类可以创建任意多个具有相同属性和方法的对象。但是在ECMAScript中没有类的概念,但是我们可以通过其他方式来模拟面向对象的类。

    //一个简单的对象
    var obj = new Object();
    var obj = {};
    obj.name = "z3";
    obj.sex = "男";
    obj.sayName = function(){
        console.info("我是张三!");
    };

        创建对象的方式
            1、工厂模式:工厂模式是软件工厂领域中一种广为人知的设计模式;

    //对象的创建方式,建议使用构造函数式
    //第一种形式 工厂模式
    function createPerson(name, sex, age){
        var obj = {};
        obj.name = name;
        obj.sex = sex;
        obj.age = age;
        obj.sayName = function(){
            console.info(this.name);
        };
        return obj;
    }
    
    var p1 = createPerson("z3", "男", 20);
    var p2 = createPerson("z4", "女", 25);
    console.info(p1.sex);
    p2.sayName();

            2、构造函数模式:比如像ECMAScript中的Array、Object、Date等都是通过构造函数来创建的。

    //第二种 构造函数式 使用new关键字创建 例如new Array() new Date();
    function Person(name, age, sex){
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.sayName = function(){
            console.info(this.name);    
        }
    }
    
    //构造一个对象,使用new关键字 传递参数,执行模版代码,返回对象
    var p1 = new Person("xiao A", 20, "男");
    var p2 = new Person("xiao B", 21, "女");
    console.info(p1.name);
    p1.sayName();
    
    console.info(p1 == p2); //false 类的概念:根据模版创建不同的实例对象
    console.info(p1.constructor === Person); //true
    console.info(Person.prototype.constructor === Person); //true
    console.info(p1.constructor == p2.constructor); //true

        使用构造函数创建对象的几种方式:

    //1 当作构造函数使用 使用new关键字(常用)
    var p = new Person("abc", 20, "男");
    console.info(p);
    
    //2 当作一般函数使用
    Person("abc", 20, "男"); //在全局环境里定义属性并复制 直接定义在window上
    console.info(name);
    console.info(age);
    console.info(sex);
    
    //3 使用call、apply关键字在另一个对象的作用域中调用
    var o = {};
    Person.call(o, "abc", 20, "男");
    console.info(o);
    
    //第一种和第三种方式还是有区别的
    console.info(p instanceof Object); //true
    console.info(p instanceof Person); //true
    console.info(o instanceof Object); //true
    console.info(o instanceof Person); //false


    转载于:https://my.oschina.net/u/2317126/blog/382538

    展开全文
  • 某些情况下,要求不允许自由创建该类的对象,而只允许该类创建一个对象,为避免其他类自由创建给该类的实例,应该把该类的构造器用private修饰,从而把该类的构造器隐藏起来。 另外提供public方法作为该类的访问...

    在某些情况下,要求不允许自由创建该类的对象,而只允许该类创建一个对象,为避免其他类自由创建给该类的实例,应该把该类的构造器用private修饰,从而把该类的构造器隐藏起来。

    另外提供public方法作为该类的访问点,用于创建该类的对象,且该方法只能是static修饰(因为调用该方法之前还不存在对象,因此调用该方法不可能是对象,只能是类)

    此外还需要缓存已经创建的对象,否则该类无法知道是否曾经创建过对象,也就无法保证只能创建一个对象。,因此用一个成员变量来保存曾经创建的对象,并用static修饰,被上面的静态方法访问。

     

    创建单例类:

    /**
     * 说明:单例类,始终只能创建一个实例
     * @author LiuYP_1024
     *
     */
    
    class Singleton{
    	//使用类变量来缓存曾经创建的实例
    	private static Singleton instance;
    	//隐藏构造器
    	private Singleton(){
    		
    	}
    	//因为创建该类对象时,还不存在对象,因此调用该方法的不可能是对象,只能是类,用static修饰
    	//并且应该保证只能产生一个实例
    	public static Singleton getInstance() {
    		if(instance==null) {
    			instance =new Singleton();
    		}
    		return instance;
    	}
    }
    
    public class SingletonTest {
    	public static void main(String[] agrs) {
    		//创建单例类对象不能通过构造器,只能通过getInstance()方法
    		Singleton s1=Singleton.getInstance();
    		Singleton s2=Singleton.getInstance();
    		System.out.println(s1==s2);
    	}
    }
    

    结果输出是:ture

     

    内容整理来源于:疯狂Java讲义

    展开全文
  • 实例对象:通过new 创建的对象 实例字段:创建的对象中的参数,用该类创建对象时,才会出现并被复制 字段:static 静态字段 实例就是对象 实例变量:用该类创建对象时才会出现并被赋值。 变量(静态变量)...

    实例对象:通过new 创建的对象
    实例字段:创建的对象中的参数,在用该类创建对象时,才会出现并被复制
    类字段:static 静态字段

    实例就是对象
    实例变量:在用该类创建对象时才在会出现并被赋值。
    类变量(静态变量):在该类加载到VM中时就被赋值,且该变量被这个类的所有对象所共享。
    同一类的不同的对象有自己的实例变量,但是它们共享同一个类变量。当一个对象修改了它的实例变量时,不会影响其他的对象各自的实例变量。如果一个对象修改了类变量,则对于其他对象来说这个值也被改变了

    创建对象

    实例就是某个类的一个对象。

    类只是一个抽象的东西,对象才是实在的东东。所以叫实例

    展开全文
  • 创建对象,就需要有一个“类”,Java等其他很多语言中,都用class关键字来声明类,声明了类,我们才能创建对象,我把类理解为对象的妈妈,有类才有对象,而对象拥有哪些属性和方法,都是在类中规定。...

    JS中,生成实例对象的传统方法是通过构造函数。 ES6 提供了更接近 传统语言的写法,引入了 Class(类)这个概念

    什么是类,对象,实例?

    面向对象编程思想中,写代码都是在操作一个个对象,通过修改对象的属性,调用对象的方法,以此来让程序为我们服务。要创建对象,就需要有一个“类”,在Java等其他很多语言中,都用class关键字来声明类,声明了类,我们才能创建对象,我把类理解为对象的妈妈,有类才有对象,而对象拥有哪些属性和方法,都是在类中规定的。

    class Animal{
      //构造器,如果没有手动提供,用默认的
      /*constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。*/
      constructor(name){
        // this->实例
        // 实例属性
          this.name = name;
      }
      //实例方法  在构造函数的原型中
      sayName(){
        //this-->调用者
        console.log(this.name);
      }
      //静态方法  只能由类本身调用,实例不能调用
      // Array.from()  Array.of()  Object.is() Object.assign() 
      //static关键字
      static sayMy(){
        console.log('Animal');
      }
    }
    	//静态属性  只能由类本身访问,实例不能访问
    	//Animal上的属性就是静态属性 
    	Animal.staticAttr = 'AnimalStaticAttr';
    	//实例化了一个动物对象
    	let animal = new Animal('可乐');
    	console.log(animal);//Animal { name: '可乐' }
    	//调用实例方法,原型中的方法
    	animal.sayName();//可乐
    	//调用静态方法  用对象
    	Animal.sayMy();  //静态方法只能由类本身调用 Animal
    	
    	//访问静态属性
    	console.log(Animal.staticAttr);//AnimalStaticAttr
    
    

    以上声明了一个Animal类,在类内部创建了对象,类相当于实例的原型,实例化了动物对象,设置了对象的属性及方法,不同的是,静态属性 (Animal上的属性就是静态属性),只能由类本身访问,实例不能访问,调用实例方法,用原型中的方法, 调用静态方法 用对象

    那么问题来了,怎么理解什么是静态方法,什么是实例方法?
    静态方法:
    静态方法属于类,通过 类名.方法名(参数)调用。
    eg:Animal.sayMy();

    实例方法:
    1.实例方法属于对象,通过 实例对象.方法名(参数)调用。
    2. 实例方法中可以使用对象专属this、super关键字指向调用对象本身、父类。
    eg:animal.sayName();

    以上为部分总结 ~

    展开全文
  • 大家都知道:当一个类的构造方法被设为私有的时候(private),在其他类中是无法用new来实例化一个对象的。但是有一种方法可以把带有私有构造器的类实例化出对象。在java的反射机制中,可以通过Class.forName(类名)....
  • 我正在写一个java游戏,我需要一个单元原型主数据库.数据库只是一个包含HashMap类,它存储了几十个包含单个单元类型统计信息实例.当游戏产生一个新单元时,它会将该单元...我有几个其他类,基本上是军队,包含许...
  • 如果内部类是public且包含类,那么其他一些不相关的类中的代码也可以创建内部类的实例。没有内部类对象会自动用外部类对象实例化。如果内部类是静态的,则可以没有外部类实例的情况下实例化静态内部类。否则,内部...
  • 我正在写一个java游戏,我需要一个单元原型主数据库.数据库只是一个包含HashMap类,它存储了几十个包含单个单元类型统计信息实例.当游戏产生一个新单元时,它会将该单元...我有几个其他类,基本上是军队,包含许...
  • 小编典典这行似乎总结了您的问题的症结所在:问题在于,现在您不能... 如其他地方所述,您不能使用名称的String表示形式将反映的实例转换为已知类型。但是,您可以使用Stringequals()测试来确定您的是否为所...
  • 1.类和对象 什么是类 类:是一组属性和行为集合。...//你要是在其他的类中调用它你用个屁main方法???????????? public class Student(){ String name; public void eat(){ System.ou
  • 通过类,来创建类的对象(也称作类的实例化) //3.通过“对象.属性”或“对象.方法”来调用,完成相应功能 //二 创建的多个对象,彼此各自拥有一套类的属性。当对起重工一个对象的属性进行修改时;不会影响其他类的...
  • 一个java类可以产生n个属于此类型的对象(实例),java类是创建java对象的模板,java对象是java类的具体表现形式,java类是一个抽象的表现。 运行对象访问对象里的内容称为封装。 创建类 创建对象 允许perObject引用...
  • 面向对象最重要概念就是(Class)和实例(Instance),牢记 是抽象模板,比如Student,而实例是根据类创建出来一个个具体对象”,每个对象都拥有相同方法,但各自数据可能不同。 以Student为...
  • 不可变类的实例的状态不会变化,这样的实例可以安全的被其他与之关联的对象共享,还可以安全的被多个线程共享。 为了节省内存空间, 优化程序的性能, 应该尽可能的重用不可变类的实例,避免重复创建具有相同属性值...
  • /*** 设计模式:对问题行之有效解决方式。其实它是一种思想。1,单例设计模式。解决问题:就是可以保证一个类内存中的对象唯一性。对于多个程序使用同一个配置信息对象时,...2,通过new类中创建一个本类对...
  • java学习---使用反射创建类的实例

    千次阅读 2015-11-12 10:02:02
    大家都知道:当一个类的构造方法被设为私有的时候(private),在其他类中是无法用new来实例化一个对象的。 但是有一种方法可以把带有私有构造器的类实例化出对象。 在java的反射机制中,可以通过Class.forName(类名...
  • 面向对象的术语,我们说小明的自行车是被称为自行车类的对象实例。 任何车辆的例子。它包括轮子,马力,燃油或燃气罐容量。这些特点形成的类车辆的数据成员。可以从其他车辆区分这些特征。 车辆也有一定的功能,如...
  • 绑定一个实例上的属性不会影响其他实例,但是,类本身也是一个对象,如果类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个!也就是说,实例属性每个实例各自拥有,互相...
  • 不可变对象初始化之后状态不变的实例。例如,String是一个不可变类,一旦实例化,它的值不会改变。不可改变的类对于缓存的目的是有益的,因为你不需要担心价值的变化。不可变类的其他好处是它本质上是线程安全的...
  • 首先Java是一门面向对象的语言,类是对所属于一类的所有对象的抽象,对象的所有结构化信息都定义类中,因此对象创建需要根据类中定义的类型信息,也就是类所对应的class二进制字节流,所以这就涉及到了类的...
  • Android Native层中创建Java虚拟机实例 前言 Android应用中JNI代码,是作为...例如,你需要用虚拟机实例来创建jstring和其他的Java对象、查找或成员变量等。大部分情况下,你用JNI接口从Java层调用Native...
  • Python中类的创建和使用方法

    千次阅读 2019-03-13 06:56:31
    根据类来创建对象被称为实例化,你将把自己编写类存储模块,并自己程序文件导入其他程序员编写类。 1. 创建类 简单来说我们定义类应该包含两部分:属性+功能。 我们来定义一...
  • ”是一种构造,通过使用该构造,您可以将其他类型变量、方法和事件组合一起,从而创建自己自定义类型。就像一个蓝图,它定义类型数据和行为。如果没有声明为静态,客户端代码就可以创建赋给变量...
  • 单例模式 一个只能创建一个对象,即单例模式,该模式可以...不管你将来用不用,程序启动时就创建一个唯一的实例对象 构造函数私有 提供一个静态的方法返回单例 声明一个静态的单例成员 拷贝构造和赋值声明为delete函
  • JavaScript 是面向对象的语言,...创建对象实例或类(虽然没有类的概念,但是可以把用于创建对象对象看作类),可以通过构造函数来实现,构造函数就是具有一系列属性和行为作为函数体的函数,可以通过函数参数传入
  • JDK 1.5的基本类库,对一些不可变类,如Integer类做了优化,它具有一个实例缓存,用来存放程序...不可变类的实例的状态不会变化,这样的实例可以安全地被其他与之关联的对象共享,还可以安全地被多个线程共...
  • 不可变类的实例的状态不会变化,这样的实例可以安全的被其他与之关联的对象共享,还可以安全的被多个线程共享。 为了节省内存空间, 优化程序的性能, 应该尽可能的重用不可变类的实例,避免重复创建具有相同属性值...
  •  在其他语言中,对象一旦生成,就不可更改了,要为一个对象添加修改成员必须要在对应的类中修改,并重新实例化,而且程序必须重新编译。JavaScript 中却非如此,它提供了灵活机制来修改对象的行为,可以动态添加...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,379
精华内容 1,751
关键字:

在其他类中创建类的实例对象