java中类的构造方法

您所在的位置:网站首页 构造方法啥意思 java中类的构造方法

java中类的构造方法

2023-09-18 06:52| 来源: 网络整理| 查看: 265

在java的类中除了成员方法之外,还存在一种特殊类型的方法,就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每当实例化一个对象时,类都会调用构造方法。

public class Bird { public Bird() { // TODO 自动生成的构造函数存根 } }

如上,我们创建了一个Bird类,而方法pubilc Bird(){}就是类Bird的构造方法,构造方法有如下特点: (1)构造方法没有返回值。 (2)构造方法的名称要与本类的名称相同。 构造方法没有返回值,但这与普通没有返回值的方法不同,普通没有返回值的方法使用public void method()这种形式来定义,但构造方法并不需要用void关键字进行修饰。 那么,构造方法有什么用呢?? 构造方法可以为成员变量赋值,当实例化一个本类的对象时,相应的成员变量也将会被初始化。我们都知道,小鸡是从鸡蛋中孵化出来的,鸡蛋中的细胞进行分裂,并分化出不同的器官,最后组成了小鸡。在java中,构造方法就是创建一个对象的过程。 如果类中没有明确定义构造方法,编译器会创建一个不带参数的默认构造方法。但是如果在类中定义的构造方法都不是无参的构造方法,则编译器不会为类设置一个默认的无参构造方法,当试图调用无参构造方法实例化-一个对象时,编译器会报错。所以只有在类中没有定义任何构造方法时,编译器才会在该类中自动创建-一个不带参数的构造方法。 在这里插入图片描述 如上图,当我们实例化一个bird对象时,调用了Bird()方法,但Bird类中我们并没有明确定义Bird()方法,但编译器并没有报错,这说明Bird()方法已经存在了,这就是编译器自动创建的不带参数的默认的构造方法。 在这里插入图片描述 如上图,当我们定义了一个有参数的构造方法时,编译器就会报错“构造函数Bird()未定义”,这说明java虚拟机为我们创建的五参数的构造方法已经没有了,如果我们想调用定义的构造方法,就必须把参数给加上来。 在这里插入图片描述 如果我们还想调用无参数的构造方法,只需再另外定义一个无参数的构造方法即可: 在这里插入图片描述 既然构造方法时初始化对象用的,那他都初始化了什么东西了呢??这时候我们就要用到this关键字了。事实上this关键字不仅可以调用类的成员变量和成员方法(即我们可以在构造方法中为成员变量赋初值),还可以调用类中的构造方法。 我们输入如下代码:

public class Bird { int BirdChild; public Bird(int BirdChild) { this.BirdChild = BirdChild; System.out.println("这一窝有" + BirdChild + "只小鸟"); } public Bird() { BirdChild = 1; System.out.println("这一窝有" + BirdChild + "只小鸟"); } public static void main(String[] args) { Bird bird = new Bird(); Bird bird_1 = new Bird(5); } }

运行结果如下:

这一窝有1只小鸟 这一窝有5只小鸟

这样我们就完成了构建一窝小鸟的过程,我们看到,代码里面两个方法里面的println语句是重复的,那么我们可不可以简化一下呢?当然是可以的,我们只要吧代码改成下面这样就可以了:

public class Bird { int BirdChild; public Bird(int BirdChild) { this.BirdChild = BirdChild; System.out.println("这一窝有" + BirdChild + "只小鸟"); } public Bird() { this(1); } public static void main(String[] args) { Bird bird = new Bird(); Bird bird_1 = new Bird(5); } }

运行结果和上面的也是一样的,这里我们就是在无参数构造方法里面用this关键字调用了有参数的构造方法,使代码简化了很多。 当然了,构造方法也可以用private来修饰,使其变成私有的构造方法,无法在本类外部使用,也就导致本类无法用new实例化,这样可以控制对象的生成。这里就不再详细说明了,有兴趣的可以去查找一下相关的资料。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3