构造器_lombok设置全参构造器、无参构造器、部分参数构造器 - CSDN
构造器 订阅
构造器是Java和C#学习中很重要的一个概念,构造器可以提供许多特殊的方法,构造器作为一种方法,负责类中成员变量(域)的初始化。实例构造器分为缺省构造器和非缺省构造器。 展开全文
构造器是Java和C#学习中很重要的一个概念,构造器可以提供许多特殊的方法,构造器作为一种方法,负责类中成员变量(域)的初始化。实例构造器分为缺省构造器和非缺省构造器。
信息
外文名
Constructor
特    点
提供许多特殊的方法
分    类
静态构造器等
用    途
Java和C#学习中很重要的一个概念
中文名
构造器
构造器构造器的简介
构造器最大的用处就是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化。如果想改变这种默认的初始化,就可以通过自定义构造器来实现。构造器是为了创建一个类的实例化对象的时候用到:InstanceObject IO = new InstanceObject(); 构造器可以用来在初始化对象时,初始化数据成员,即包括初始化属性和方法。一个类可以有多个构造器。一个类的构造器的名称必须与该类的名称一致。要退出构造,可以使用返回语句“return;”。相反,方法的作用是为了执行java代码。相同点:构造器也是Java类中的一种方法。不同点:构造器和方法在下面三个方面的区别:修饰符,返回值,命名。(1)修饰符:和方法一样,构造器可以有任何访问的修饰符: public, protected, private或者没有修饰package(通常被package 和 friendly调用). 不同于方法的是,构造器不能有以下非访问性质的修饰: final,,static,,abstract,synchronized,native。(2)返回类型:方法能返回任何类型的值或者无返回值(void),构造器没有返回值,也不需要void。(3)两者的命名:构造器通常用首字母为大写的一个名词开始命名,并且使用和类相同的名字命名。而方法则不同,方法通常用小写字母英文动词开始,其后跟随首字母为大写的名称、形容词等等组成的驼峰命名方式,方法通常更接近动词,因为它说明一个操作。
收起全文
  • JAVA-构造器

    2018-08-21 17:30:06
    构造器 用于创建对象并初始化对象属性的方法,叫“构造方法”,也叫“构造器”;构造器在类中定义。 构造器的名称必须与类名同名,包括大小写。 构造器没有返回值,但也不能写void,也不能写return。 构造器的...

    构造器

    用于创建对象并初始化对象属性的方法,叫“构造方法”,也叫“构造器”;构造器在类中定义。

    1. 构造器的名称必须与类名同名,包括大小写。
    2. 构造器没有返回值,但也不能写void,也不能写return。
    3. 构造器的参数:一般是初始化对象的前提条件。
    4. 用new调用!且对象一建立,构造器就运行且仅运行一次。一般方法可被调用多次。
    5. 类一定有构造器!这是真的,不需要质疑!
    6. 如果类没有声明(定义)任何的构造器,Java编译器会自动插入默认构造器!
    7. 默认构造是无参数,方法体是空的构造器,且默认构造器的访问权限随着所属类的访问权限变化而变化。如,若类被public修饰,则默认构造器也带public修饰符。
    8. 默认构造器是看不到的,一旦自己写上构造器则默认构造器就没有了,自己写的叫自定义构造器,即便自己写的是空参数的构造器,也是自定义构造器,而不是默认构造器。
    9. 如果类声明了构造器,Java编译器将不再提供默认构造器。若没手动写出无参构造器,但却调用了无参构造器,将会报错!
    10. 构造器是可以重载的,重载的目的是为了使用方便,重载规则与方法重载规则相同。 
    11. 构造器是不能继承的!虽说是叫构造方法,但实际上它不是常说的一般方法。 
    12. 子类继承父类,那么子类型构造器默认调用父类型的无参数构造器。
    13. 子类构造器一定要调用父类构造器,如果父类没有无参数构造器,则必须使用super(有参数的),来调用父类有参的构造器。 那么,为什么子类一定要访问父类的构造器?因为父类中的数据子类可以直接获取。所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的,所以子类在对象初始化时,要先访问一下父类中的构造器。总之,子类中至少会有一个构造器会访问父类中的构造器,且子类中每一个构造函数内的第一行都有一句隐式super()。
    14. 注意事项:sper()、sper.和 this()、this.
    15. this:在运行期间,哪个对象在调用this所在的方法,this就代表哪个对象,隐含绑定到当前“这个对象”。
    16. super():调用父类无参构造器,一定在子类构造器第一行使用!如果没有则是默认存在super()的!这是Java默认添加的super()。
    17. super.是访问父类对象,父类对象的引用,与this.用法一致
    18. this():调用本类的其他构造器,按照参数调用构造器,必须在构造器中使用,必须在第一行使用,this() 与 super() 互斥,不能同时存在
    19. this.是访问当前对象,本类对象的引用,在能区别实例变量和局部变量时,this可省略,否则一定不能省!
    20. 如果子父类中出现非私有的同名成员变量时,子类要访问本类中的变量用this. ;子类要访问父类中的同名变量用super. 

    eg:默认构造器

    public class Demo {   
        public static void main(String[] args) {
    
              Foo foo = new Foo();//调用了javac自动添加的默认构造器!
    
              //Koo koo = new Koo();//编译错误,没有Koo()构造器
    
              Koo koo = new Koo(8);  
        }         
    }
        class Foo { } //Foo有构造器,有无参数的默认构造器!
        class Koo {    
            public Koo(int a) {  //声明了有参数构造器
                   System.out.println("Call Koo(int)");  
            }       
        }

     

     

     

    展开全文
  • 构造器的理解

    2019-05-01 18:06:00
    一、构造器的作用:创建类的对象 二、说明: 1、如果没有显式定义构造器的话,系统默认提供一个空参构造器 package com.guigu.java1; public class person { public static void main(String[] args) { ...

    一、构造器的作用:创建类的对象
    二、说明:
    1、如果没有显式定义构造器的话,系统默认提供一个空参构造器

    package com.guigu.java1;

    public class person {
    public static void main(String[] args) {
    PersonTest test = new PersonTest();
    PersonTest p1 = new PersonTest(“tom”);

    System.out.println(p1.name);
    }
    

    }
    class PersonTest{

    //属性
    String name;
    int age;
    //构造器
    public PersonTest(){
    	System.out.println();
    	
    }
    public PersonTest(String n){
    	name = n;
    }
    public PersonTest(String s,int n){
    	name = s;
    	age = n;
    }
    
    //方法
    

    }
    PersonTest test = new PersonTest();
    红色的就是默认的空参构造器。

    2、定义构造器的格式:权限修饰符 类名 (形参列表){ 构造器的体 }
    例如下面的:

    public PersonTest(){
    System.out.println(“构造器”);
    }

    造了对象之后,写好构造器了,一运行,可以发现
    出现了构造器几个字

    说明造了对象调用的就是构造器。

    构造器第二个作用:可以初始化对象的属性
    主函数有:PersonTest p1 = new PersonTest(“tom”);
    PersonTest类中有:
    public PersonTest(String n)
    {
    name = n;
    }

    说明3:
    一个类中定义的多个构造器之间构成重载

    public PersonTest(){
    		System.out.println("构造器");
    		
    	}
    	public PersonTest(String n){
    		name = n;
    	}
    	public PersonTest(String s,int n){
    		name = s;
    		age = n;
    	}
    	
    	//方法
    		
    }
    

    说明4:一旦我们显式定义了类的构造器后,系统就不会提供默认的空参构造器
    例如注释掉这个
    在这里插入图片描述
    PersonTest test = new PersonTest();
    这个会报错

    展开全文
  •  构造器是一个创建对象时被自动调用的特殊方法,为的是初始化。构造器的名称应与类的名称一致。  当创建一个个对象时,系统会该对象的属性默认初始化,基本类型属性的值为0(数值类型),false(布尔类型),把...

    大部分内容转自:http://tech.it168.com/j/2006-05-18/200605181021879.shtml       

           构造器是一个创建对象时被自动调用的特殊方法,为的是初始化。构造器的名称应与类的名称一致。

           当创建一个个对象时,系统会该对象的属性默认初始化,基本类型属性的值为0(数值类型),false(布尔类型),把所有的引用类型设置为null.

           构造器可以改变这种默认的初始化。

           构造器的作用:是创建java对象的重要途径,是不是说构造器完全负责创建java对象?

           答:是创建java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回了该类的对象,但这个对象并不是完全由构造器负责创建的。

            首先要注意的是Java的构造器并不是函数,所以他并不能被继承,这在我们extends的时候写子类的构造器时比较的常见,即使子类构造器参数和父类的完全一样,我们也要写super就是因为这个原因。

     
      构造器的修饰符比较的有限,仅仅只有public private protected这三个,其他的例如任何修饰符都不能对其使用,也就是说构造器不允许被成名成抽象、同步、静态等等访问限制以外的形式。
     
      因为构造器不是函数,所以它是没有返回值的,也不允许有返回值。但是这里要说明一下,构造器中允许存在return语句,但是return什么都不返回,如果你指定了返回值,虽然编译器不会报出任何错误,但是JVM会认为他是一个与构造器同名的函数罢了,这样就会出现一些莫名其妙的无法找到构造器的错误,这里是要加倍注意的。
     
      在我们extends一个子类的时候经常会出现一些意想不到的问题,我在这里说一些和构造器有关的。

    首先说一下Java在构造实例时的顺序(不讨论装载类的过程)。

     
      构造的粗略过程如下:
     
      1、分配对象空间,并将对象中成员初始化为0或者空,java不允许用户操纵一个不定值的对象。
     
      2、执行属性值的显式初始化(这里有一点变化,一会解释,但大体是这样的)。
     
      3、执行构造器
     
      4、将变量关联到堆中的对象上

     介绍一下准备知识,以备一会来详细说明这个的流程。

     

      this() 、super()是你如果想用传入当前构造器中的参数 or 构造器中的数据调用其他构造器或者控制父类构造器时使用的,在一个构造器中你只能使用this()或者super()之中的一个,而且调用的位置只能在构造器的第一行,在子类中如果你希望调用父类的构造器来初始化父类的部分,那就用合适的参数来调用super(),如果你用没有参数的super()来调用父类的构造器(同时也没有使用this()来调用其他构造器),父类缺省的构造器会被调用,如果父类没有缺省的构造器,那编译器就会报一个错误。

         注意此处,我们经常在继承父类的时候构造器中并不写和父类有关的内容,此时如果父类没有缺省构造器,就会出现编译器添加的缺省构造器给你添麻烦的问题了哦。

     

    public class Manager extends Employee {
      private String department;
      public Manager(String name, double salary, String dept)
     {
       super(name, salary);
       department = dept;
     }
     public Manager(String n, String dept) {
       super(name);
       department = dept;
     }
     public Manager(String dept) {
      // 这里就没有super(),编译器会自动地添加一个空参数的缺省super构造器,此时如果Employee类中没有空参数的缺省构造器,那就会导致一个编译错误
       department = d;
     }
     }
    
    展开全文
  • java中的构造方法是一种特殊的方法,用于初始化对象。java构造函数在对象创建时被调用。它构造值,即提供对象的数据。 创建java构造函数的规则 构造函数基本上定义了两个规则。分别如下: 构造函数名必须与其...

    java中的构造方法是一种特殊的方法,用于初始化对象。java构造函数在对象创建时被调用。它构造值,即提供对象的数据。

    创建java构造函数的规则

    构造函数基本上定义了两个规则。分别如下:

    • 构造函数名必须与其类名称相同
    • 构造函数必须没有显式返回类型

    Java构造函数类型

    有两种类型的构造函数

    • 默认构造函数(无参数构造函数)
    • 参数化构造函数
      1.Java默认构造函数
      没有参数的构造函数称为默认构造函数。默认构造函数的语法如下:
    < class_name>(){}

    默认构造函数的示例:
    在这个例子中,在Bike类中创建了无参数(no-arg)构造函数。它将在对象创建时被调用。

    class Bike1{
        Bike1(){
             System.out.println("Bike is created");
        }
         public static void main(String args[]) {
            Bike1 b = new Bike1();
    }

    默认构造函数的目的是根据类型为对象提供默认值,如:0,null等。
    显示默认值的默认构造函数示例

    class Student3 {
        int id;
        String name;
    
        void display() {
            System.out.println(id + " " + name);
        }
    
        public static void main(String args[]) {
            Student3 s1 = new Student3();
            Student3 s2 = new Student3();
            s1.display();
            s2.display();
        }
    }

    在上面代码中我们并没有为其提供构造函数,但是我们在输出是会发现其是有值的,这就是在上面的类中,代码中并没有创建任何构造函数,但编译器自动提供了一个默认构造函数。默认构造函数分别为字段:id 和 name 分别提供了0和null值。
    2.Java参数化构造函数
    参数化构造函数用于为不同对象提供不同初始化的值。
    示例:
    在构造函数中我们可以添加任意多少的参数。

    class Student4 {
        int id;
        String name;
    
        Student4(int i, String n) {
            id = i;
            name = n;
        }
    
        void display() {
            System.out.println(id + " " + name);
        }
    
        public static void main(String args[]) {
            Student4 s1 = new Student4(111, "Karan");
            Student4 s2 = new Student4(222, "Aryan");
            s1.display();
            s2.display();
        }
    }

    Java构造函数重载

    构造方法重载是Java中的一种技术,一个类可以有任何数量的参数列表不同的构造函数。编译器通过构造函数参数列表中的参数数量及其类型来区分这些构造函数。
    示例:

    class Student5 {
        int id;
        String name;
        int age;
    
        Student5(int i, String n) {
            id = i;
            name = n;
        }
    
        Student5(int i, String n, int a) {  //通过参数的不同告知编译器此处用到了构造函数的重载
            id = i;
            name = n;
            age = a;
        }
    
        void display() {
            System.out.println(id + " " + name + " " + age);
        }
    
        public static void main(String args[]) {
            Student5 s1 = new Student5(111, "Karan");
            Student5 s2 = new Student5(222, "Aryan", 25);
            s1.display();
            s2.display();
        }
    }

    java构造函数和方法之间的区别

    这里写图片描述

    Java拷贝构造函数

    在Java中没有复制构造函数。但是可以将一个对象的值复制到另一个中,就像C++中的复制构造函数,在java中有很多方法可以将一个对象的值复制到另一个对象中。它们分别是:

    • 通过构造函数
    • 通过将一个对象的值分配给另一个
    • 通过Object类的clone()方法
    • 在下面的例子中我们将通过Java的构造函数将一个对象的值赋值到另一个对象中。
    class Student6 {
        int id;
        String name;
    
        Student6(int i, String n) {
            id = i;
            name = n;
        }
    
        Student6(Student6 s) {  //参数传入的是类对象
            id = s.id;
            name = s.name;
        }
    
        void display() {
            System.out.println(id + " " + name);
        }
    
        public static void main(String args[]) {
            Student6 s1 = new Student6(111, "Karan");
            Student6 s2 = new Student6(s1);    //将上面的s1传入
            s1.display();
            s2.display();
        }
    }

    将对象值分配给另一个对象
    可以通过将对象值分配给另一个对象,将一个对象的值复制到另一个对象中。 在这种情况下,不需要创建构造函数。

    class Student7 {
        int id;
        String name;
    
        Student7(int i, String n) {
            id = i;
            name = n;
        }
    
        Student7() {
        }
    
        void display() {
            System.out.println(id + " " + name);
        }
    
        public static void main(String args[]) {
            Student7 s1 = new Student7(111, "Karan");
            Student7 s2 = new Student7();
            s2.id = s1.id;  //直接赋值
            s2.name = s1.name;  //同上
            s1.display();
            s2.display();
        }
    }

    注意:

    • 构造函数返回当前类的实例(不能指定返回值类型,但它会返回一个值)。
    • 在构造函数中我们不仅可以实现赋值,还可以实现比如:对象创建、启动线程、调用方法等。可以像在方法中执行的任何操作一样,在构造函数中也可以做到。
    展开全文
  • 使用构造器时需要记住:1.构造器必须与类同名...不添加任何构造器会默认有空的构造器继承与构造器使用super调用父类构造器的语句必须是子类构造器的第一条语句为什么加上super?Java的构造器并不是函数,所以他...
  • 深入构造器

    2020-08-06 14:35:41
    构造器是一种特殊的方法,这个特殊的方法用于创建实例时执行初始化。构造器是创建对象的重要途径,因此Java必须提供一个或者一个以上的构造器。 使用构造器来实现执行初始化 构造器最大的用途就是在创建对象的时候...
  • 构造器

    2018-04-04 23:26:32
    通过new关键字调用,有返回值,不能定义返回值类型(返回值类型肯定是本类型) 不能在构造器里使用return,如果没有定义构造器系统会帮助添加一个无参构造函数,如果定义就不会添加,构造器方法名必须与类名保持一致...
  • 构造器

    2020-05-21 16:22:31
    构造器:在我们构建对象的时候被调用的一个方法,此方法与类名一致,没有返回值,用于初始化参数,加载参数,补充参数 new对象的时候,类里没有构造器,它会自动加一个构造器 构造器:从面向对象的思想来理解:它叫做...
  • 构造器的作用和例子

    2018-04-18 19:21:18
    构造器的作用和例子构造器的特点:1.方法名和类名相等 2.没有返回值,并且不能用void(如果用void来声明其返回值类型,那么java会把这个构造器当做方法来处理——那它不再是构造器) 3.构造器中的参数列表中的参数...
  • 构造器是一个特殊的方法,其用于创建对象时执行初始化。什么叫做初始化?就是给对象赋值。 java类必须包含一个及以上的构造器构造器的名字必须与类名相同 默认构造器 不过即使在创建对象时没有写构造器也不用...
  • java中构造方法是一个重要的概念,初学时有人会对此构造方法的使用特别是其作用不清楚,下面我就来谈谈我对java中构造方法的理解,有不对或不清楚的地方希望各位看官提出意见,谢谢! 一.构造方法的定义声明 ...
  • 构造器的基本理解

    2019-06-01 16:26:04
    /* * 1.创建程序,在其中定义两个类,Person和PersonTest类。定义如下: * 用setAge()设置人的合法年龄(0~130),用getAge()返回人的年龄。 * 在PersonTest类中...在前面定义的Person类中添加构造器,利用...
  • 假设没有写有构造器的情况下,虚拟机会自动加上一个没有参数的构造器,如果写有构造器,那么虚拟机就不会在加上构造器了。构造器写法:public class Test1 { public Test1() { System.out.println("我是构造...
  • 在上一篇博客中简单介绍了构造器基础层面的知识构造器(一),下面我们深入的学习类的构造器应用。 在Swift中类一共有两种构造器: 指定构造器 便利构造器 什么是指定构造器,有什么作用?我个人的理解为在类中没有加...
  • java 类的构造器

    2019-05-16 00:15:13
    尚硅谷java学习笔记 ... * 1、设计类时,如不显示声明类的构造器 的话,程序会默认提供一个空参的构造器 ; 2、一旦显示的定义类的构造器,那么默认的构造器就不在提供, * 3、如何声明类的构造器。 ...
  • 首先我们理解一下构造器的概念:这是一个在创建对象时被自动调用的特殊方法。 也就是说构造器是属于方法中的一种! 构造器和方法在下面三个方面的区别:修饰符,返回值,命名。和方法一样,构造器可以有任何访问的...
  • 定义和作用:构造器是在构建类的 引用时 自动运行的方法。所以,每个类都必须至少要有一个构造器。在访问一个类的时候,编译器最先执行构造器中的代码。 它与类同名,带参数的构造器能够获取参数,但是与方法不同的...
  • Java反射获取构造器   获取某一个类中的所有构造器: 1. 明确操作的是哪一个类(严格的说是类编译后的字节码) 2. 获取构造器 Constructor类:表示类中构造器的类型,Constructor实例表示的就是某一个类中的...
  • 实例构造器深入理解

    2020-07-05 22:17:28
    Java语言中,实例构造器只能在new表达式(或别的构造器)中被调用,不能通过方法调用表达式来调用。new表达式作为一个整体保证了对象的创建与初始化是打包在一起进行的,不能分开进行;但实例构造器只负责对象初始化...
  • 要区分Java中构造器(构造方法/Constructor)和方法的区别,需要掌握下面几个要点: 修饰符 构造器:不能用abstract、final、native、static修饰 方法:可以用各种修饰符修饰 返回值 构造器:无返回值,也无void 方法...
1 2 3 4 5 ... 20
收藏数 1,003,008
精华内容 401,203
关键字:

构造器