首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Effective Java - 静态方法与构造器

用静态工厂方法替代构造器? 传统来讲,为了使客户端能够获取它自身的一个实例,最传统的方法就是提供一个公有的构造器。...静态工厂有名称 众所周知,构造器的声明必须与类名相同,构造方法顾名思义就是构造此类的方法,也就是通过构造方法能够获得这个类对象的引用,所以构造方法必须与类名相同。...由于静态方法有名称,所以在实现过程中,所以它们不受上述限制,当一个类需要多个带有相同签名的构造器时,就用静态工厂方法替代构造器,并仔细的选取静态工厂的名称以便突出其主要功能。...EnumSet 没有公有的构造器,只有静态工厂方法。...2 静态工厂方法很难被发现 在API文档中,它们没有像构造器那样在API文档中被标明,因此,对于提供了静态工厂方法而不是构造器的类来说,要想查明如何实例化一个类是非常困难的。

89130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java基础03 构造器与方法重载

    我们可以使用构造器(constructor)来初始化对象。构造器可以初始化数据成员,还可以规定特定的操作。这些操作会在创建对象时自动执行。 定义构造器 ---- 构造器是一个方法。...像普通方法一样,我们在类中定义构造器。...构造器是如何被调用的呢?我们在创建类的时候,采用的都是new Human()的方式。实际上,我们就是在调用Human类的构造器。...当我们没有定义该方法时,Java会提供一个空白的构造器,以便使用new的时候调用。但当我们定义了构造器时,在创建对象时,Java会调用定义了的构造器。在调用时,我们提供了一个参数160。...上面定义了两个构造器,名字都是Human。两个构造器有不同的参数列表。 在使用new创建对象时,Java会根据提供的参数来决定构建哪一个构造器。

    29310

    Java基础03 构造器与方法重载

    我们可以使用构造器(constructor)来初始化对象。构造器可以初始化数据成员,还可以规定特定的操作。这些操作会在创建对象时自动执行。 定义构造器 构造器是一个方法。...像普通方法一样,我们在类中定义构造器。...构造器是如何被调用的呢?我们在创建类的时候,采用的都是new Human()的方式。实际上,我们就是在调用Human类的构造器。...当我们没有定义该方法时,Java会提供一个空白的构造器,以便使用new的时候调用。但当我们定义了构造器时,在创建对象时,Java会调用定义了的构造器。在调用时,我们提供了一个参数160。...上面定义了两个构造器,名字都是Human。两个构造器有不同的参数列表。 在使用new创建对象时,Java会根据提供的参数来决定构建哪一个构造器。

    679100

    Java里的构造函数(构造方法)

    参考链接: java构造函数 本文转载之https://www.cnblogs.com/livterjava/p/4709561.html 构造函数 ,是一种特殊的方法。...一, 构造函数的特点: 构造函数的主要作用是完成对象的初始化工作,(如果写的类里面没有构造函数,那么编译器会默认加上一个无参数且方法体为空的构造函数).它能够把定义对象时的参数传给对象的域。...一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。构造方法可以重载,以参数的个数,类型,顺序。  ...:默认情况下,一个类会有一个默认的构造函数,这个构造函数没有内容也没有返回值,一般都回略去不写.这种情况下,编译器在编译的时候会默认加上一个无参且方法体为空的构造函数.但是,如果类的构造函数被重写了,如上例...,Person类已经有了一个有参数有方法体的构造函数,这时编译器就不会再给它默认加上一个无参且方法体为空的构造函数.可以理解为无参的构造函数被覆盖了.这种情况称为没有默认构造函数.

    2.5K00

    软件测试|什么是Python构造方法,构造方法如何使用?

    构造方法(Constructor)是面向对象编程中的重要概念,它在创建对象时用于初始化对象的实例变量。在Python中,构造方法是通过特殊的名称__init__()来定义的。...本文将介绍Python构造方法的基本概念、语法和用法。 什么是构造方法? 在面向对象编程中,构造方法是一个特殊的方法,用于在创建对象时初始化对象的状态。...构造方法的名称在大多数编程语言中是固定的,例如在Python中,构造方法的名称是__init__()。这个名称是Python的约定,用于表示构造方法的特殊性质。...总结 构造方法是面向对象编程中的重要概念,它在创建对象时用于初始化对象的状态。Python中的构造方法是通过特殊名称__init__()来定义的,它接受self参数和其他需要的参数。...构造方法是Python面向对象编程中必须掌握的重要知识点。

    29130

    Java中的构造方法

    大家好,又见面了,我是你们的朋友全栈君。 简述前言: 【08-10】构造方法 定义:就是类构造对象时调用的方法,主要用来实例化对象。构造方法分为无参构造方法、有参构造方法。...概念:构方法是一种特殊的“成员方法” 1,构造方法作用:(1)构造出来一个类的实例 (2)对构造出来个一个类的实例(对象)初始化 2,构造方法的名字必须与定义他的类名完全相同...当同一个类存在多个构造方法时,java编译系统会自动按照初始化时最后面括号的参数个数以及参数类型来自动一一对应 完成构造函数的调用] 7,构造方法可以被重载...构造代码块是给所有不同对象的共性进行统一初始化,构造函数是给对应的对象进行初始化 9,自定义类中,如果不写构造方法,java系统会默认添加一个无参的构造方法。...必须显式地调用另一个构造函数 意思就是在子类调用构造函数时,必须先调用父类构造函数,因为无参数的构造函数,编译器会自动调用,也就是第一种情况不会报错。

    78630

    java之类的构造方法

    构造器的特征: 具有和类相同的名称; 不声明返回值的类型; 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值; 构造器的作用:创建对象...public void setAge(int i){age = i;} public int getAge(){return age;} } 当创建Animal类的实例时,构造方法就被调用...,此时age被赋予初始值4 Animal a = new Animal() 根据参数的不同,构造器可以分为以下两类: 隐式无参构造器(系统默认提供); 显示定义一个或多个构造器; 注意: java语言中...,每个类都至少有一个构造器; 默认构造器的修饰符与所属类的修饰符一致; 一旦显示定义了构造器,则系统不再使用默认构造器; 一个类可以创建多个重载的构造器; 父类的构造器不可被子类继承; 构造器的重载:使对象的创建更加灵活...//java中一个文件中不能同时有两个public类,但是可以存在多个类 public class Person{ String name; int age; public Person

    30210

    java基础学习-构造方法

    创建对象的时候默认会调用构造方法来创建对象(在堆中开辟空间),可以完成成员属性的某些初始化操作。...构造方法语法: 方法名称,构造方法的方法名称必须跟类的名称保持一致 访问修饰符 形参,可以用户自定义添加,跟方法的普通参数一样 方法体,完成对象的初始化功能 返回值,没有返回值 public class...Process finished with exit code 0 注意: 创建完类之后,如果没有手动调用构造方法,会有一个默认的无参的构造方法供调用 当用户自定义了构造方法之后,默认的无参构造方法就不能使用了...,必须要手动定义无参构造方法 同一个类中可以包含多个同名的构造方法 public class Teacher { String name; int age; //构造方法...age = agea; } //无参构造方法 public Teacher(){ System.out.println("调用无参构造方法");

    41392

    Java 多态方法构造器执行方法

    public class Polymorphism { /** * 创建一个类A * 该类中有一个方法draw,以及一个构造方法A */ static...A(),所以会输出 A() before draw() 这时A调用了draw()方法,因为是构造B类,而B类覆盖重写A类的draw()方法,所以这里应该调用的是B类重写过后的draw()方法,而B类的value...=5 ---- 而实际上,最后输出的并不是 B.draw(),value=1 而是 B.draw(),value=0 ---- 最后在《Thinking in Java》一书中找到了类似的例子,其中给出了一套正确的初始化顺序...: (1)在其他任何事物之前,将分配给对象的存储空间初始化为二进制的零; (2)如前所述那样调用基类构造器。...此时,调用被覆盖后的draw()方法  (要在调用B构造器之前调用),由于步骤1的缘故,我们此时会发现value的值为0。 (3)按照声明的顺序调用成员的初始化方法。 (4)调用导出类的构造器主体。

    65150

    【反射】Java反射机制 -- 常用构造器与方法

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Java反射 什么是反射...: 反射允许对成员变量,成员方法和构造方法的信息进行编程访问。 反射的作用: ①获取一个类里面所有的信息,获取到之后,在执行其它业务逻辑。 ②结合配置文件,动态创建对象并调用。 1....反射 - 获取构造方法 Class类中用于获取构造方法的方法: Constructor[] getConstructors():返回所有公共构造方法对象的数组。 Constructor... parameterTypes):返回单个构造方法的对象。...Constructor类中用于创建对象的方法: T newInstance(Object... initargs):根据指定的构造方法创建对象。

    18830

    Java封装构造方法

    private/public的分装 被public修饰的成员变量或者是成员方法,可以被类的调用对象直接使用 而private修饰的成员变量和方法,不能被类的调用对象使用 例如: 可以看到我们是不能在...main方法中直接调用被private修饰的变量 当然我们可以在我们定义的TestMode类中可以定一个方法show,然后在调用show方法实现 这里我们可以清楚了解 private 不光可以修饰字段...//name=name //这样写的话是错误的 //或者可以将参数写为其他名称来进行赋值 } public String setName(){...,里面有很多可以生成的源代码,快捷键我的默认是command+n....构造方法 1.首先我们的构造方法需要与你的类名相同 2.我们的构造方法可以重载 3.构造方法没有返回值,对象的引用,为对象分配一块空间来储存并调用对象的构造方法 class TestMode{

    4800

    java 构造器 构造方法_Java构造器(构造方法constructor)

    我们先来看一下什么是构造器: 1、构造器也叫构造方法或构造函数,分为有参构造器和无参构造器; 2、构造器也是一种方法,只不过是一种特殊的方法,它会在对象创建的时候被调用; 3、构造器最大的作用就是在创建对象的时候进行对象的初始化...5、构造器不能被子类继承,Java中子类会自动调用父类的构造器(同样,不了解的可以先记下概念或者跳过) 前面既然说了构造器是一种特殊的方法,我们就来看一下构造方法和普通方法的区别: 1、命名:构造器的方法名必须和类名相同...) 来看一下无参构造器的代码,同时看一下无参构造器的情况下(不定义构造器同理)是如何给属性赋值的: 1 package test; public class Student01 { //定义属性 public...String name; public int age; public String sex; /** * 无参的构造方法: * 如果不写编译器会自动加上;只要定义了构造器,不管是有参还是无参,编译器都不会再帮你定义...(“姓名:”+s3.name+”\n性别:”+s3.sex+”\n年龄:”+s3.age); //因为这里用的是没有给年龄传值的构造器,所以打印的年龄是初始值0 } } 结果: 姓名:张翠花 性别:女

    1.1K10

    Java构造方法(超详细!)

    大家好,又见面了,我是你们的朋友全栈君。 1.构造方法有什么作用? 构造方法是一个比较特殊的方法,通过构造方法可以完成对象的创建,以及实例变量的初始化。...换句话说:构造方法是用来创建对象,并且同时给对象的属性赋值。 注意:实例变量没有手动赋值的时候,系统会赋默认值。 2.构造方法怎么定义,语法是什么?...第二:构造方法名和类名必须一致。 第三:构造方法不需要指定返回值类型,也不能写void,写上void表示普通方法,就不是构造方法了。 普通方法的语法结构是?...new 构造方法名(实际参数列表); 4.什么是缺省构造器? 当一个类中没有提供任何构造方法,系统默认提供一个无参数的构造方法。 这个无参数的构造方法叫做缺省构造器。 5.怎么防止缺省构造器丢失?...不是,实例变量是在构造方法执行的过程中完成初始化的,完成赋值的。 7.构造方法支持方法重载吗? 构造方法是支持方法重载的。 在一个类当中构造方法可以有多个。 并且所有的构造方法名字都是一样的。

    60530

    什么是是JAVA构造函数

    因此,Java在类里提供了一个特殊的成员函数,叫做构造函数(Constructor)。 一个构造函数是对象被创建时初始对象的成员函数。它具有和它所在的类完全一样的名字。...构造函数的任务是初始化一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个清楚、可用的对象。 构造方法是一种特殊的方法,具有以下特点。...(1)构造方法的方法名必须与类名相同。 (2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。...(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。...java 构造函数的执行过程 类初始化时构造函数调用顺序: (1)初始化对象的存储空间为零或null值; (2)调用父类构造函数; (3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;

    74220

    软件测试|什么是Python构造方法,构造方法如何使用?

    图片构造方法(Constructor)是面向对象编程中的重要概念,它在创建对象时用于初始化对象的实例变量。在Python中,构造方法是通过特殊的名称__init__()来定义的。...本文将介绍Python构造方法的基本概念、语法和用法。什么是构造方法?在面向对象编程中,构造方法是一个特殊的方法,用于在创建对象时初始化对象的状态。它在对象创建的过程中自动调用,负责为对象设置初始值。...构造方法的名称在大多数编程语言中是固定的,例如在Python中,构造方法的名称是__init__()。这个名称是Python的约定,用于表示构造方法的特殊性质。...总结构造方法是面向对象编程中的重要概念,它在创建对象时用于初始化对象的状态。Python中的构造方法是通过特殊名称__init__()来定义的,它接受self参数和其他需要的参数。...构造方法是Python面向对象编程中必须掌握的重要知识点。

    19010

    Java默认构造器

    Java中的默认构造器返回的值是什么? 当我们用Java调用构造函数时,它返回由它创建的对象。 这就是我们用Java创建新对象的方式。 7. 我们能继承构造函数吗?...不能,Java不支持构造函数的继承。 8. 为什么在Java中构造函数不能是final,static或abstract? 如果将方法设置为final,则意味着我们不希望任何类覆盖它。...但是构造函数(按照Java语言规范)不能被覆盖。 因此,没有必要将其标记为final。 如果我们将方法设置为抽象方法,则意味着它没有主体,应在子类中实现。...但是,当使用new关键字时,将隐式调用构造函数。 因此,它需要一个body。 如果我们将方法设置为static,则意味着它属于该类,但不属于特定对象。 始终调用构造函数来初始化对象。...因此,没有使用标记构造函数为静态的。

    79831

    什么是java构造函数_什么是java构造函数

    大家好,又见面了,我是你们的朋友全栈君。 构造函数是面向对象中的一员,构造函数可以叫做构造器,它的函数名与类名相同,不用定义返回值类型,也没有具体的返回值。...那么我们在java里面怎么在对象一旦创建就赋值呢? 1.构造方法的作用: 构造方法作用:对对象进行初始化。 如图: 2.构造函数与普通函数的区别: (1)一般函数是用于定义对象应该具备的功能。...而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容。也就是对象的初始化内容。 (2)构造函数是在对象建立时由jvm调用, 给对象初始化。...(5)构造函数没有返回值类型。 3.构造函数要注意的细节: (1)当类中没有定义构造函数时,系统会指定给该类加上一个空参数的构造函数。这个是类中默认的构造函数。...(2)构造代码块的作用:它的作用就是将所有构造方法中公共的信息进行抽取。

    1.2K20
    领券