Java中的构造方法(构造函数)与普通方法区别 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

Java中的构造方法(构造函数)与普通方法区别

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:24

**

Java中的构造办法(构造函数)与通俗办法差别

**
一、明白什么是构造办法,什么是通俗办法?

所谓的构造办法,是一种特别的办法,其感化是用来创建对象时初始化对象,即为对象成员变量赋初始值,老是与new运算符一路应用在创建对象的语句中。特其余,一个类是可以有多个构造函数,可以根据参数个数的不合或者参数类型的不合来区分它们,即为构造函数的重载。
构造办法是类的一个特别的成员,在类实例化时会主动调用,其构造办法定义格局如下:

润饰符 办法名(){}

个中须要留意的是:

  1. 办法名邮攀类名雷同;
  2. 没有返回值类型;
  3. 没有具体的返回值。

例如接下来这个例子,在创建对象的时刻,对象成员可以由构造函数办法进行初始化。

new对象时,都是用构造办法进行实例化的;
例如;Test test = new Test"a");
 //Test("a");个中这个就是构造函数,“a”为构造办法的形参;

而通俗办法是简单来说就是完成特定功能的代码块。其定义的格局如下:

润饰符 返回值类型 办法名 (参数类型 参数名1,参数类型 参数名2,…)
{
函数体;
return 返回值;
}
个中:返回值类型用于限制返回值的数据类型。

二、 明白构造办法和通俗办法的特点和感化是什么?

1. 构造办法的特点:

构造函数的重要感化是完查对象的初始化工作,(如不雅写的类琅绫擎没有构造函数,那么编译器会默认加上一个无参数且办法体为空的构造函数).它可以或许把定义对象时的参数传给对象的域。意即当创建一个对象时,这个对象就被初始化.如不雅这时构造函数不为空,则会在创建对象时就履行构造函数琅绫擎的代码:
在这里插入图片描述
构造函数的名称必须邮攀类名雷同,包含大年夜小写。
构造函数没有返回值的,也不克不及用void来进行润饰。如不雅不当心给构造函数添加了返回类型,那么这将使这个构造函数变成一个通俗办法了,则在运行时将产生找不到构造办法的缺点。
④一个类可以定义多个构造办法,如不雅在定义类时定义构造办法,则编译体系会主动插入一个无参数的默认构造器,这个构造器不履行任何代码。
构造办法可以重载,以参数的个数,类型,次序来重载。例如:

public static void main(String[] args) {
        Phone p1 = new Phone();
        p1.show();
        
        System.out.println("----------------");
        
        Phone p2 = new Phone("vivoxplay5",2999);
        p2.show();
    }        
}

class Phone{
    private String brand;  //品牌
    private int price;       //价格
    
    //无参构造办法
    public Phone(){
        System.out.println("无参构造");
    }

    //有参构造器
    public Phone(String brand, int price) {
        this.brand = brand;
        this.price = price;
        System.out.println("有参构造");
    }
    
    public void show(){
        System.out.println(brand+"..."+price);
    }

    
}

构造办法给成员变量赋值的两种方法的差别:

/**
     * 无参构造办法:给属性进行初始化
     * set/get办法:修改属性值
     * @param args
     */
public static void main(String[] args) {
        //无参构造创建对象
        Phone p1 = new Phone();    
        p1.setBrand("vivoxplay5");
        p1.setPrice(2999);
        
        p1.setBrand("vivo");
        p1.show();
        
        System.out.println("----------------");
        //有参构造创建对象
        Phone p2 = new Phone("vivoxplay5",2999);
        //这种方法并不是改名,而是将原对象变成垃圾
        //p2 = new Phone("vivo",2000);
        p2.show();
    }        
}

class Phone{
    private String brand;  //品牌
    private int price;       //价格
    
    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    //无参构造办法
    public Phone(){
        System.out.println("无参构造");
    }

    //有参构造器
    public Phone(String brand, int price) {
        this.brand = brand;
        this.price = price;
        System.out.println("有参构造");
    }
    
    public void show(){
        System.out.println(brand+"..."+price);
    }

    
}

2. 构造办法的感化:

【1】 起首,构造函数用来生成并初始化对象;
【2】其次,构造函数可以经由过程函数的重写给对象赋初始值,简化代码,例如:
在这里插入图片描述
在这段代码中,本文创建了两个Person对象,分别赋给了初始值,然则如不雅创建的对象比较多的话,代码就显得很反复,这时可以重载Person类琅绫擎的构造办法,以在创建对象的时刻就赋给它们初始值,如许就可以省去反复的代码了:
在这里插入图片描述
在这里有一个问题须要特其余留意:在默认的情况下,一个类会有一个默认的构造函数,这个构造函数没有内容也没有返回值,一般会省略。在这种情况下,编译器在编译的时刻会默认加上一个无参且办法体为空的函数。然则,如不雅类的构造函数被重写了,如上述的例子,Person类已经有了一个有参数有办法体的构造函数,这是编译器就不会再给它默认加上一个无参且办法体为空的构造函数,可以懂得为无参的构造函数被覆盖了,这种情况称为没有默认构造函数。
而在函数的持续里,子类必须调用父类的构造函数。然则子类只能持续父类的默认的构造函数,如不雅父类没有默认的构造函数,那么子类不克不及大年夜父类持续默认构造函数,这是子类必须应用super来实现对父类的非默认构造函数的调用。是以,在创建对象的时刻,须要先应用super来调用父类的默认的构造函数来对对象进行初始化,然后调用子类本身定义的构造函数。

3.通俗办法的特点与感化

【1】通俗办法的特点:
办法是解决一类问题的步调的有序组合;
②一个办法必须属于某一个类的,自力于类的办法不存在的;
③Java的通俗办法可以操作调用它从属的对象和参数列表中的参数;
通俗办法的调用方法为:对象.办法名(参数),如接下来的代码为例:

public void driverCar (int a,double b) {
    speed= 50;
    direction= "南边";
}

⑤Java办法只能有一个返回值,然则“值”的情势具有多样性
【2】感化:
完成特定功能的代码块,即根据本身项目标须要,进行本身编码完成项目所须要的功能。

三、明白构造办法和通俗办法的调用方法是如何调用的?

1)构造办法的调用方法

构造办法分为:无参构造办法有参构造办法

A. 无参构造办法:

public class Student{
public  Student(){                    //无参构造办法

System.out.println("无参办法被调用")}

}

public class Test {
public  static void main (String[]  args){
Student   stu = new Student();  //实例化Student对象

}

}//该办法是无参的构造办法,即构造办法不接收参数,履行后输出即可,无参的构造办法被调用。

B. 有参构造办法

为一个属性赋值有两种办法: ①直接拜访对象属性②经由过程setXxx()办法。
如不雅想在实例化对象的同时就为了对象的属性进行赋值,可以经由过程带参数的构造办法来实现

public class Student{
private String name;
private int  age;
public  Student(String name,int age){             //有参构造办法
    this.name = name;
    this.age  = age ;
}
public  void show (){
System.out.println("姓名:"+name+"年纪:"+age)}
}
public  class  Test02(){
public static void main (String[]   args)
{
Student  stu = new Student("王小五"25)//实例化对象的同时赋值
stu.show();
}
}

2)通俗办法的调用方法

通俗办法分为 有明白返回值的办法没有明白返回值的办法

A. 有明白返回值的办法的调用

可以零丁调用(无意义),输出调用,赋值调用(推荐)。

public static int sum (int a , int b)
{
    int c = a+b;
    return c ;
}
public static void main(String[] args)
{
           //sum(10,20); //零丁调用
           //System.out.println(sum(10,20));  //输出调用
           int sum01 =sum(10,20); //赋值调用
}

B. 没有明白返回值的办法调用(void类型办法的调用)

只能零丁应用。(如不雅一个办法没有明白的返回值类型,办法定义中“返回值类型”就可以用void代替,表示该办法无返回值类型。)

四、留意事项

① Java中的每一类至少有一个构造办法,如不雅我们没有去创建,体系主动会为我们创建一个默惹9依υ参构造办法;

②然则如不雅我们定义了构造办法,体系就不会再为我们供给默惹9依υ参构造办法了。这个时刻想应用无参构造办法必须本身定义。因为实例化对象时,不必定会输入参数,那么没有无参的构造办法,又不输入参数,就会掉足;

③构造办法须要用public来润饰,若应用private,在其他类中无法将其实例化;

④构造办法是可以重载的。所谓重载,是指一个类中可以定义多个办法名雷同,然则参数不合的办法。调用时,会根据不合的参数主动匹配对应的办法。

相关案例查看更多