Java中的构造器的作用?(构造方法的作用与特点)

您所在的位置:网站首页 喷水器的作用和用途是什么 Java中的构造器的作用?(构造方法的作用与特点)

Java中的构造器的作用?(构造方法的作用与特点)

2024-07-03 18:15| 来源: 网络整理| 查看: 265

Java中的构造器的作用是什么?

今天看到一个问题,那就是Java中的构造器的作用是什么,第一反应是:嗯?构造器?不就是构造方法嘛,只是只是叫法不一样,但是习惯喊构造方法的我还是忍不住吐槽了,回归正题,用简单来说构造器的作用就是:

创建对象初始化成员变量

那么问题来了,构造方法的特点有哪些呢:

首先是构造方法的方法名要与类名一致构造方法分为:有参构造方法和无参构造方法构造方法无返回类型,void类型也不可以构造方法是不能被继承的,但是可以使用super来调用,且super必须声明在在子类构造方法中的首行默认有一个无参构造方法,当自定义无参构造方法的时候,默认则无效可以没有构造方法(编译器默认有一个无参构造方法),也可以有多个构造方法,他们之间构成重载关系

一开始学习JavaSE的时候,对于构造方法的概念还十分模糊,也不知道怎么用,在哪儿用,只会盲目的写差不多的getter setter方法模板:

public class ConstructionDemo5 { private String name; private int number; private double score; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public static void main(String[] args) { ConstructionDemo5 constructionDemo5=new ConstructionDemo5(); constructionDemo5.setName("杜"); constructionDemo5.setNumber(21); constructionDemo5.setScore(97.4); System.out.println("我是"+ constructionDemo5.name+",我学号是:"+ constructionDemo5.number+",我这次成绩是:"+ constructionDemo5.score); } } 我是杜,我学号是:21,我这次成绩是:97.4 Process finished with exit code 0

从上面的代码看来,new对象,调用set方法赋值,这看起来似乎没什么问题,但是在需要给更多的成员变量赋值的时候,实例化更多对象的时候,就很容易造成纰漏,上面的方法是会增加我们的工作量,并且冗长的代码也不适宜阅读,那该怎么办呢?

这时候就要用到构造方法了

public class ConstructionDemo6 { private String name; private int number; private double score; public ConstructionDemo6(String name, int number, double score) { this.name = name; this.number = number; this.score = score; } public static void main(String[] args) { ConstructionDemo6 construction=new ConstructionDemo6("杜",1,99.9); System.out.println("我是"+ construction.name+",我学号是:"+ construction.number+",我这次成绩是:"+ construction.score); } } 我是杜,我学号是:1,我这次成绩是:99.9 Process finished with exit code 0

上面的例子中用到了有参构造方法,通过构造方法我们可以避免了忘给某些成员变量赋值的问题。

关于构造方法,一开始我说到分为有参构造方法和无参构造方法,默认有一个无参构造方法,当自定义无参构造方法的时候,默认则无效可以没有构造方法(编译器默认有一个无参构造方法),也可以有多个构造方法,他们之间构成重载关系。

下面我举出相关例子:

package com.JavaSe.Demo; /** * @Description TODO * @Author Du * @Date 2021/5/28 18:27 */ public class ConstructionDemo { //定义类Construction1 自己不手动添加任何无参或有参数构造方法 static class Construction1{ private int age; private String name; private String sex; } //定义类Construction2 自己添加无参的构造方法 static class Construction2{ private int age; private String name; private String sex; public Construction2(){ System.out.println("无参构造方法被调用"); } } //定义类Construction3 有参数的构造方法 static class Construction3{ private int age; private String name; private String sex; public Construction3(String name, String sex, int age ){ this.name = name ; this.sex = sex; this.age = age; } } //定义类Construction4 自己添加无参的构造方法,和有参数的构造方法 static class Construction4{ private int age; private String name; private String sex; //不带参数的构造函数,可以被重载 public Construction4(){ System.out.println("无参构造方法被调用"); } //带参数对的构造函数 public Construction4(String name, String sex, int age ){ this.name = name; this.sex = sex; this.age = age; } //方法重载 public Construction4(String name,double score){ this.name=name; } } public static void main(String[] args) { Construction1 construction1 = new Construction1();//编译通过;①实例化Person对象 ②自动调用构造方法Construction( ) Construction2 construction2 = new Construction2();//编译通过;打印: 无参构造方法被调用 // 这样写,编译器会报错,原因是系统默认的无参构造方法被有参构造方法覆盖,编译器不能再提供无参构造方法 Construction3 construction3 = new Construction3(); //Person4 Construction4 = new Person4();//编译通过;打印: 无参构造方法被调用 Construction4 Construction4 = new Construction4("qzz", "man", 18);//编译通过; } }


【本文地址】


今日新闻


推荐新闻


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