JAVA中的构造函数

简介: 1:构造器是干什么的??? 构造器最大的用处就是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化。如果想改变这种默认的初始化,就可以通过自定义构造器来实现。   2:使用构造器时需要记住:   1.

1:构造器是干什么的???

构造器最大的用处就是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化。如果想改变这种默认的初始化,就可以通过自定义构造器来实现。

 

2:使用构造器时需要记住:

 

1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)

2.每个类可以有一个以上的构造器;

3.构造器可以有0个、1个或1个以上的参数;

4.构造器没有返回值;

5.构造器总是伴随着new操作一起调用;

 

3:构造器的调用:

调用无参的构造器:如

  我们先创建一个Father类,体提供一个无参的构造器,

1 package Constructor;
2 
3 public class Father {
4 
5     public Father() {
6         System.out.println("调用了这个构造器");
7     }
8 }

  然后我们去创建测试类,去new这个对象

 1 package Constructor;
 2 
 3 public class Test {
 4 
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         Father F1=new Father();
 8         
 9     }
10 }

  我们直接运行,会发现构造器被调用了

  到我们信new一个对象的时候,这个时候就会默认调用空的构造函数,然后初始化这个对象,其实new一个对象就是在堆中给开辟了一个新的内存空间,里面存放的是这个对象的信息,然后栈中存放的是句柄,这个句柄对应着堆中对象所在的位置。

 

如果我们自定义了构造函数了,则调用的时候就不会自动调用无参的构造函数了,如:

 

 

调用有参的构造器:如

 1 package Constructor;
 2 
 3 public class Father {
 4     private String name;
 5     private int age;
 6     private String sex;
 7     
 8     
 9     public Father(String name, int age, String sex) {
10         super();
11         this.name = name;
12         this.age = age;
13         this.sex = sex;
14         System.out.println("调用了有三个参数的构造函数"+name+"--"+age+"--"+sex);
15     }
16     
17     
18     public Father(String name, int age) {
19         super();
20         this.name = name;
21         this.age = age;
22         System.out.println("调用了有三个参数的构造函数"+name+"--"+age);
23     }
24     
25     
26 
27     public Father(String name) {
28         super();
29         this.name = name;
30         System.out.println("调用了有三个参数的构造函数"+name);
31     }
32 
33     
34 }

 

在这里我们可以看到我们重载的构造的方法,

 1 package Constructor;
 2 
 3 public class Test {
 4 
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         Father F1=new Father("GH");
 8         
 9         Father F2=new Father("GH",12,"男");
10         
11         Father F3=new Father("GH",19);
12     }
13 }

 

我们运行一下看看:

 

 

 子类调用父类的构造函数:

使用super调用父类构造器的语句必须是子类构造器的第一条语句

如果子类构造器没有显式地调用父类的构造器,则将自动调用父类的默认(没有参数)的构造器。如果父类没有不带参数的构造器,并且在子类的构造器中又没有显式地调用父类的构造器,则java编译器将报告错误

 如图:

给父类加上空的构造方法,编译就能通过;

 

默认调用父类无参的构造函数:

 1     public Father() {
 2         System.out.println("子类默认调用父类的无参构造函数");
 3     }
 4 
 5 
 6 
 7 public class Son extends Father{
 8 
 9 }
10 
11 
12 
13 public static void main(String[] args) {
14         // TODO Auto-generated method stub
15         Son s=new Son();    
16     }

结果:

 

我们能使用super关键字,进行对父类的构造函数进行自定义的调用:

 1 package Constructor;
 2 
 3 public class Son extends Father{
 4 
 5     public Son(String name, int age, String sex) {
 6         super(name, age, sex);
 7         // TODO Auto-generated constructor stub
 8     }
 9 
10     
11 }
12 
13 
14 
15 
16 
17 package Constructor;
18 
19 public class Test {
20 
21     public static void main(String[] args) {
22         // TODO Auto-generated method stub
23         Son s=new Son("aaa", 12, "女");    
24     }
25 }

运行:

 

 关于构造器就那么多了;

 

欢迎大家一起说出自己的想法。
目录
相关文章
|
4月前
|
Java
【Java基础面试三十四】、接口中可以有构造函数吗?
这篇文章讨论了Java中接口不能包含构造函数的原因,主要解释了接口中的成员变量默认是public static final类型的常量,不需要通过构造函数初始化,且接口本身不能被实例化,因此构造函数在接口中没有意义。
|
2月前
|
Java 编译器
【编程基础知识】详解Java构造函数
构造函数是与类同名且不带返回值的特殊函数,用于对象初始化。它可以是无参或有参的,支持重载。若未自定义构造函数,编译器会提供默认的无参构造函数。子类构造函数会先调用父类的构造函数,确保父类对象先被创建。构造函数的主要作用是初始化对象的存储空间、调用父类构造函数和初始化成员变量。
31 0
|
3月前
|
Java 开发者
【Java编程新纪元】JDK 22:超级构造函数来袭,super(...) 前导语句改写编程规则!
【9月更文挑战第6天】JDK 22的超级构造函数特性是Java编程语言发展史上的一个重要里程碑。它不仅简化了代码编写,还提升了代码的可读性和维护性。我们有理由相信,在未来的Java版本中,还将有更多令人兴奋的新特性等待我们去发现和应用。让我们共同期待Java编程新纪元的到来!
|
4月前
|
Java 开发者
什么是 Java 中的构造函数链?
【8月更文挑战第21天】
41 1
|
5月前
|
安全 Java 程序员
【Java探索之旅】多态:向上下转型、多态优缺点、构造函数陷阱
【Java探索之旅】多态:向上下转型、多态优缺点、构造函数陷阱
47 0
|
7月前
|
缓存 Java 编译器
Java 构造函数与修饰符详解:初始化对象与控制权限
Java 构造函数 是一种特殊的类方法,用于在创建对象时初始化对象的属性。它与类名相同,并且没有返回值类型。 构造函数的作用: 为对象的属性设置初始值 执行必要的初始化操作
95 0
|
7月前
|
Java
Java面向对象编程,构造函数和方法的区别是什么?
Java面向对象编程,构造函数和方法的区别是什么?
121 2
|
Java
【Java练习题】Java 程序的输出 | 第十四套(构造函数)
【Java练习题】Java 程序的输出 | 第十四套(构造函数)
65 0
|
Java API
Java反射(通过反射获取构造函数、方法、属性)
1.通过反射获取构造函数,2.通过反射获取方法,3.通过反射调用成员属性
119 0
|
Java
Java 类(私有属性、对象方法、类方法,构造函数)
Java 类(私有属性、对象方法、类方法,构造函数)
124 0