Java中的构造函数和方法之间的区别

Java方法

  • 一种方法用于探索对象的行为。

  • 我们可以在方法的前面加上访问修饰符。

  • 方法必须具有返回类型,例如void,任何原始类型(int,char,float等),任何Object类型(Integer,Float,String等)。

  • Java编译器不会隐式调用方法,我们需要显式调用。

  • 让我们假设如果我们有一个类,并且在该类中,我们没有任何单个方法,那么在这种情况下,java编译器默认不包含其自身的任何方法。

  • 它不是必须具有与其类名称相同的方法名称,或者换句话说,方法名称可以与或不与类名称相同。

  • 方法有两种:

    1. 没有参数方法

    2. 参数化方法

i)没有参数方法

没有参数或参数的方法,换句话说,这种方法不带任何参数的方法称为无参数方法。

示例

class NoArgumentMethod {
    //无参数方法定义
    void display() {
        System.out.println("We are in no argument method");
    }
}

class Main {
    public static void main(String[] args) {
        //创建一个NoArgumentMethod类的对象
        NoArgumentMethod nam = new NoArgumentMethod();
        //调用display()方法 
        nam.display();
    }
}

输出:

E:\Programs>javac Main.java

E:\Programs>java Main
We are in no argument method

ii)参数化方法

具有参数的方法,换句话说,这种类型的方法接受任何参数,称为参数化方法。

示例

class ParameterizedMethod {
    String name;
    //参数化方法定义
    void display(String name) {
        System.out.println("The name is " + name);
    }
}

class Main {
    public static void main(String[] args) {
        //创建一个ParameterizedMethod类的对象
        ParameterizedMethod pm = new ParameterizedMethod();

        //调用display()方法 
        pm.display("Rahul");
    }
}

输出结果

E:\Programs>javac Main.java

E:\Programs>java Main
The name is Rahul

Java构造函数

  • 构造函数是一种特殊的方法,它在创建对象时由JVM(Java虚拟机)隐式调用。

  • 构造函数的目的是初始化对象的实例变量。

  • 我们也可以在访问说明符前面加上构造函数。

  • 构造函数不能具有返回类型,即它不返回任何东西。

  • 构造函数是一个隐式调用的特殊函数(即,对于我们不需要显式调用的用户而言是有益的)。

  • 假设我们有一个名为“ Constructor”的类,并且在该类中,我们不包含任何构造函数,因此在这种情况下,java编译器将包含一个自己的默认构造函数。

  • 它的名称必须与构造函数的类名称相同,或者换句话说,构造函数名称必须与类名称相同。

  • 我们有三种类型的构造函数:

    1. 默认构造函数

    2. 参数化构造函数

    3. 复制构造函数

i)默认构造函数

如果我们在类中不包含任何构造函数,则此默认构造函数将由编译器隐式调用。默认构造函数没有参数,或者说没有参数构造函数。

示例

class DefaultConstructor {
    //构造函数定义    DefaultConstructor() {
        System.out.println("We are in default constructor");
    }
}

class Main {
    public static void main(String[] args) {
        //调用默认构造函数
        DefaultConstructor dc = new DefaultConstructor();
    }
}

输出结果

E:\Programs>javac Main.java
E:\Programs>java Main
We are in default constructor

ii)参数化构造函数

具有参数的构造函数称为参数化构造函数。如果我们想用我们的值初始化实例变量,而该构造函数不会被编译器隐式调用。

示例

class ParameterizedConstructor {
    String name;
    //构造函数定义
    ParameterizedConstructor(String name) {
        this.name = name;
    }
}

class Main {
    public static void main(String[] args) {
        //调用参数化构造函数
        ParameterizedConstructor pc = new ParameterizedConstructor("Preeti");
        System.out.println("The name is :" + pc.name);
    }
}

输出结果

E:\Programs>javac Main.java

E:\Programs>java Main
The name is : Preeti

iii)复制构造函数

具有一个参数的构造函数,该参数是同一类的引用。

示例

class CopyConstructor {
    String name;
    //构造函数定义
    CopyConstructor(String name) {
        this.name = name;
    }
}

class Main {
    public static void main(String[] args) {
        //调用构造函数
        CopyConstructor cc1 = new CopyConstructor("Preeti");

        //复制的cc1构造函数 
        CopyConstructor cc2 = cc1;

        System.out.println("The value of cc1 is :" + cc1.name);
        System.out.println("The value of cc2 is :" + cc2.name);
    }
}

输出结果

E:\Programs>javac Main.java

E:\Programs>java Main
The value of cc1 is :Preeti
The value of cc2 is :Preeti