欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java构造方法

程序员文章站 2022-08-13 21:42:06
Java构造方法概述构造方法是定义在Java类中的一个用来创建对象的方法。是一种特殊的方法,主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符在一起使用在创建对象的语句中。特别的一个类可以有多个构造方法方法,可根据其参数的个数不同或参数类型的不同来区分他们,即构造方法(函数)的重载。特点**当没有指定构造方法时,系统会自动添加无参的构造方法。**构造方法的主要作用是完成对象的初始化工作,如果写的类里面没有构造方法,那么编译器会默认加上一个无参数且方法体为空的构造函数。它能...

Java构造方法

概述

构造方法是定义在Java类中的一个用来创建对象的方法。是一种特殊的方法,主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符在一起使用在创建对象的语句中。特别的一个类可以有多个构造方法方法,可根据其参数的个数不同或参数类型的不同来区分他们,即构造方法(函数)的重载。

特点

  • **当没有指定构造方法时,系统会自动添加无参的构造方法。**构造方法的主要作用是完成对象的初始化工作,如果写的类里面没有构造方法,那么编译器会默认加上一个无参数且方法体为空的构造函数。它能够把定义对象时的参数传给对象的域。即当创建一个对象时,这个对象就被初始化。如果这时构造函数不为空,则会在创建对象时就执行构造函数里的代码。

  • 一个类可以定义多个构造方法,如果在定义时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。

  • 构造方法可以重载:方法名相同,但参数不同的多个方法,调用时会根据不同的参数选择相应的方法。

  • 构造方法是不被继承的。

  • 当我们手动的指定了构造方法时,无论是有参数的还是无参数的,系统都不会再添加无参的构造方法。

语法规则

  • 构造函数的名称必须与类名相同,包括大小写。

  • 构造函数没有返回值,也不能用void修饰。如果不小心给构造函数前面添加了返回值类型,那么这将使这个构造方法变成一个普通的方法,运行时将产生找不到构造方法的错误。

  • 可以指定参数,也可以不指定参数;分为有参构造方法和无参构造方法。

构造方法的作用

  • 首先,构造函数用来生成并初始化对象

  • 构造函数可以通过函数的重写给对象赋初始值,简化代码

public class TestPerson {
    public static void main(String [] args){
        Person p1 = new Person();
    	p1.name = "zhangsan";
    	p1.age = 10;
    
    	Person p2 = new Person();
    	p2.name = "Tom"
        p2.age = 20;
    }
}


class Person{
    Person(){
        //构造方法,无参的构造函数可以政略不写
    }
    String name;
    int age;
}

这段代码里创建了两个Person对象,分别赋给了初始值.但如果创建的对象比较多的话,代码就显的很重复.这时可以重载Person类里面的构造方法,以在创建对象的时候就赋给它们初始值,这样就可以省去重复的代码

public class TestPerson {
    public static void main(String [] args){
        Person p1 = new Person("zhangsan",10);
        Person p2 = new Person("Tom",20);
    }
}


class Person{
    Person(){
        //构造方法,无参的构造函数可以政略不写
    }
    Person(String name,int age){
        this.name = name;
        this.age = age;
    }
    String name;
    int age;
}

这里有一个问题需要特别注意:默认情况下,一个类会有一个默认的构造函数,这个构造函数没有内容也没有返回值,一般都回略去不写.这种情况下,编译器在编译的时候会默认加上一个无参且方法体为空的构造函数.但是,如果类的构造函数被重写了,如上例,Person类已经有了一个有参数有方法体的构造函数,这时编译器就不会再给它默认加上一个无参且方法体为空的构造函数.可以理解为无参的构造函数被覆盖了.这种情况称为没有默认构造函数.

而在函数的继承里,子类必须调用父类的构造函数。但是,子类只能继承父类的默认构造函数,如果父类没有默认的构造函数,那子类不能从父类继承默认构造函数.这时子类必须使用super来实现对父类的非默认构造函数的调用.

在创建对象时,先调用父类默认构造函数对对象进行初始化,然后调用子类自身自己定义的构造函数。

本文地址:https://blog.csdn.net/qq_45866503/article/details/109278807

相关标签: java