java构造函数调用
① java如何在重载的构造函数中调用原来的构造函数
public Person(String s) { this.name = s;}public Person(String s,char c) { this(s); this.sex = c;}public Person(String s,char c,int i) { this(s, c); this.age = i;}
② Java中的构造函数Constructor怎么用
注意: 由于Java不允许像C++那样为函数的参数提供缺省值,因此在构造函数中也不能使用缺省值.
构造函数的特点:
1.它的函数名与类名相同;
2.它可以重载;
3.不能指定返回类型,即使是void也不行;
4.虽然在一般情况雹搭下,构造函数不被显式调用,而是在创建对象时自动被调用。但是并不是不能被显示调用。有些时候是一定要显示调用的,只要是父类有带参的构造函数,在子类中就必须显示的调用父类的构造函数,因为子类的构造器在实例化时无法找到父类的构造函数(当父类有自己写的无参构造函数时,子类也不用显示调用)。
③ java 调用静态方法和构造函数和静态块执行的先后顺序
在Java中,静态方法、静态块和构造函数的执行先后顺序如下:
静态块先执行:
- 当类被加载时,静态块会首先被执行。静态块用于初始化静态变量或执行类级别的初始化操作。
- 在示例中,ExA类的静态块先执行,输出“父类–静态代码块”,然后ExB类的静态块执行,输出“子类–静态代码块”。
静态方法:
- 静态方法是在类级别调用的,不依赖于类的实例。虽然静态方法可以在任何时候被调用,但如果是在类加载过程中通过静态块或其他静态方法间接调用,那么它的执行顺序会遵循类的加载顺序。
- 注意,示例中没有直接调用静态方法,但理论上,如果静态方法是在静态块中调用的,它会按照静态块的执行顺序被执行。
构造函数最后执行:
- 构造函数是在创建类的实例时被调用的。在实例化过程中,首先会执行父类的非静态代码块,然后是父类的构造函数,接着是子类的非静态代码块,最后是子类的构造函数。
- 在示例中,当执行new ExB时,首先执行ExA类的非静态代码块,然后是ExA类的构造函数,接着是ExB类的非静态代码块,最后是ExB类的构造函数。
重点内容: 静态块在类加载时执行,用于初始化静态成员。 构造函数在实例化对象时执行,用于初始化对象。 静态方法的执行顺序依赖于其调用时机,但通常不会在实例化过程中执行。
通过理解这些执行顺序,可以更好地掌握Java类的加载和初始化过程。
④ java构造函数什么时候被调用执行
Java在类里提供了一个特殊的成员函数,叫做构造函数(Constructor)弊培。 一个构造函数是对象被创建时初始对象的成员函数。它具有和它所在的类完全一样的名字。一旦定义好一个构造函数,创建对象时就会自动调用它。
拓展:
1、构造函数是一种特殊的函数。其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。构造函数与类名相同,可重载多个不同的构造函数。在JAVA语言中,构造函数与C++语言中的构造函数相同,JAVA语言中普遍称之为构造方法。
2、构造方法的方法名必须与类名相同。构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。构造方法的主要作用是完成对象的初始化念氏工仔卜散作,它能够把定义对象时的参数传给对象的域。一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。构造方法可以重载,以参数的个数,类型,顺序。
⑤ 构造方法何时被调用
问题一:Java中构造方法何时被调用 新建一个对象时被调用。也就是new的时候;
如:
public class A{
int i;
String c;
public A(){ } 无参构造方法
public A(int i,String c)
{
this.i = i;
this.c = c;
}两参构造方法
public static void main(String[] args){
A a = new A() ;调用了无参构造方法;
A a1 = new A(5,vieri);调用了两参构造方法
}
}
问题二:java 构造函数什么时候被调用执行 在java语言 中,构造函数又称构造方法。特殊性在于,与普通方法的区别是,他与类名相同,不返回结果也不加void返回值。构造函数的作用是初始化对象,即在创建对象时被系统调用(与普通方法不同,程序不能显示调用构造函数)。构造函数还能够被重载,即可以传入参数,当程序中包含有带参的构造函数时,系统将不会再提供的无参构造函数。构造函数特点:没有函数返回值,构造函数名与类名相同;当创建类对象的时候调用其对应的构造方法去创建。每创建一个类的实例都去初始化它的所有变量是乏味的。如果一个对象在被创建时就完成了所有的初始工作,将是简单的和简洁的。因此,Java在类里提供了一个特殊的成员函数,叫做构造函数(Constructor)。 一个构造函数是对象被创建时初始对象的成员函数。它具有和它所在的类完全一样的名字。一旦定义好一个构造函数,创建对象时就会自动调用它。构造函数没有返回类型,即使是void类型也没有。这是因为一个类的构造函数的返回值的类型就是这个类本身。构造函数的任务是初始化一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个清楚、可用的对象。 构造方法是一种特殊的方法,具有以下特点。 (1)构造方法的方法名必须与类名相同。 (2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。 (4)构造方法不能由编程人员调用,而要系统调用。 (5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。 (6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
问题三:一个类的构造函数和析构函数什么时候被调用 在对象被创建的时候就会调用构造函数,比如 声明一个类class A{...},当你在main函数中
A a ; 定义一个对象a的时候, 就调用构造函数,默认构造函数都是无参数的 ,构造函数就相当给对象a初始化而已,就相当于c语言中 int a = 3 初始化a的值而已,因为你在类中是不能直接给private中的类成员赋值的,所以就靠构造函数,不过要注意有参构造和无参构造,默认都是无参的,比如你A a(1, 3)这样的就不对了 除非你在类中写一个带参数的构造函数。
当函数调用结束的时候,会自动调用析构函数,比如你在clsaa A { public:Add().....},
当你A a; a.Add();后 就自动调用析构,你可以在类中 ~A{cout。。。},你就会发现调用
a.Add() 后就打出你在析构函数中写的东西,是自动调用的,析构的作用就是释放对象占用的资源。以为默认析构什么也不打印,所以你不会直观看出析构函数什么时候执行,自己在析构中加上打印的语言你就会看到了。希望对你能有所帮助
问题四:为什么说构造方法是一种特殊的方法?构造方法什么时候执行?被调用? 构造方法没有返回值,方法名和类名一样,其作用是用于在NEW一个类的时候,会总先调用这个类的构造方法,构造方法内部可以作一些变量的初始化或在创建这个类时必须调用的一些方法和运算,他是不用特意去调用的方法,会随着类的创建而自动去调用
例如:我们需要做一个i+j的运算,在这期间我们用到了构造函数,让其改变了i和j的初始化值
public class Text {
int i = 0;
int j = 0;
/**
* Text 的构造函数 将i和J的值重新初始化赋值
*/
public Text() {
i = 1;
j = 2;
};
public static void main(String[] args) {
Text s = new Text();
此时当你NEW完Text()时程序已经自动执行了Text的构造 函数i和j的值已经是1和2
System.out.println(s.i + s.j);
}
}
问题五:构造函数何时被调用 问法还是有问题的,构造函数包括复制构造函数
对象被创建时构造函数被调用,关键词:创建时,A a; 这种形式,指针类型在new的时候才调用
复制构造函数,也是构造函数,用一个对象作为参数创建另一个对象时,或赋值(同样关注创建时)
如 A a(b);
A b;
A a = b;
以下的不是调用复制构造函数
A a,b; 默认(无参)构造被调用
a = b; 赋值
问题六:java中的构造方法到底有什么用?什么时候采用? 1.如果当用户没有定义构造方法时,编译器会为类自动添加形如类名() { } 的无参构造方法,但是一但自己定义了构造 方法,编译器将不再自动添加.
也就是说构造方法不是必须有的.如果你之前一直未自定义构造方法,当你new一个对象时,系统会自动调用默认的一个无伐构造方法,给你对象的实例变量赋初值,比如int型默认为0.但一旦你自己定义了构造方法并new一个对象后,你再new一个对象时系统将不再为你自动提供默认的无参构造方法,那么你必须自己定义一个构造方法,否则编译出错
2 构造器可以不只一个,这叫做方法的重载
3.构造方法不但是要给对象的实例变量赋初值,更重要的是还和new一起来创建对象 ,如果你的对象没有实例变量,当然不用给对象的实例变量赋初值,也就不需要有参的构造器.但这在实际应用中,是毫无意义的.因为没有实例变量的对象什么也干不了.
问题七:java中构造方法(类)有哪些条件,一般什么时候被调用 构造方法是类中比较特殊的方法、它有如下几个特点
1.方法没有返回值
2.方法名和类名相同
3.构造方法可以重载(包括参数类型不同的重载和参数个数不同的重载)
4.每个类默认会有一个无参的构造函数
例:
public Class User{
public User(){}
public User(String name,int age){
this.name = name;
this.age = age;
}
private String name;
private int age;
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return this.age;
}
public void setAge(int age){
this.age = age;
}
}
构造函数是在你New对象的时候被调用的
例: User user = new User();
问题八:构造方法和析构方法什么时候被调用 构造函数的作用是保证每个对象的数据成员都有何时的初始值。
析构函数的作用是回收内存和资源,通常用于释放在构造函数或对象生命期内获取的资源。
一般我们都知道构造和析构的次序:
构造从类层次的最根处开始,在每一层中,首先调用基类的构造函数,然后调用成员对象的构造函数。析构则严格按照与构造相反的次序执行,该次序是唯一的,否则编译器将无法自动执行析构过程。
构造函数和析构函数都是由编译器隐式调用的。这些函数的调用顺序取决于程序的执行进入和离开实例化对象时所在的那个作用域的顺序。一般而言,析构函数的调用顺序和构造函数的调用顺序相反,但是,对象的存储类可以改变析构函数的调用顺序。
对于在全局作用域中定义的对象,它们的构造函数是在文件中所有其他函数(包括main)开始执行之前被调用的(但无法保证不同文件的全局对象构造函数的执行顺序)。对应的析构函数是在终止main之后调用的。
exit函数会迫使程序立即终止,而不会执行自动对象的析构函数。这个函数经常用来在检测到输入错误或者程序所处理的文件无法打开时终止程序。
abort函数与exit函数功能相似,但它会迫使程序立即终止,而不允许调用任何对象的析构函数。abort函数通常用来表明程序的非正常终止。
自动局部变量的构造函数是在程序的执行到达定义这个对象的位置时调用的,而对应的析构函数是在程序离开这个对象的作用域时调用的(即定义这个对象的代码完成了执行)。每次执行进入和离开自动对象的作用域时,都会调用它的构造函数和析构函数。如果程序调用了exit或abort函数而终止,则不会调用自动对象的析构函数。
静态局部对象的析构函数只调用一次,即执行首次到达定义这个对象的位置时。对应的析构函数是在main终止或程序调用exit函数时调用的。
全局对象和静态对象是以创建它们时相反的顺序销毁的。如果程序由于调用了exit函数而终止,则不会调用静态对象的析构函数。
下面的demo演示了在几个作用域不同的存储类的CreateAndDestory的类的对象,它们的构造函数和析构函数的调用顺序。
[cpp] view plain
#include
#include
using namespace std;
class Demo
{
public:
Demo(int,string); 构造函数
~Demo(); 析构函数
private:
int objectID; ID number for object
string message; message describing object
};
Demo::Demo(int ID,string messagestring)
{
objectID = ID; set object's ID number
message = messagestring; set object's descriptive message
cout>
问题九:C++构造函数什么时候会被调用? Point的构造函数被调唬两次,你可以这么理解:
当你要构造一个Rect对象的时候,每个Rect对象是不是包含两个Point对象?
所以这就是为啥构造两次的原因了。
析构与构造是一样的,两次释放,每个Point分别被析构一次。