放肆的自由|

ywwwik

园龄:2年5个月粉丝:1关注:4

Java构造器

在 Java 中,可以通过编写构造器来确保每个对象的初始化。但是这里有两个问题:

  1. 这个构造器使用的任何名字都有可能与类里某个成员相冲突;
  2. 编译器负责调用构造器,所以它必须始终知道应该调用哪个方法。

构造器的作用是用来建立一个新的类的实例,当一个对象被创建时,JVM 使用一个构造函数,并为其分配内存空间。

public class Person {
    public Person() {
    }
}    

例如,在下面的示例中,我们创建了一个名为Person的构造方法。在构造函数方法,我们正在初始化 age 变量的值。

复制代码
public class Person {

    int age;

    public Person() {
        age = 10;
    }

    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.age);
    }
}    
复制代码

注意创建 Person类的对象的语句:Person person = new Person();此时为无参构造,打印的值为10;

构造器目的

构造函数的目的是初始化对象的状态,为所有声明的属性赋值。如果我们没有自定义构造函数,JVM 就会为这些属性分配默认值

构造器分类

在 Java 中,有三种类型的构造器:

    无参构造器

    有参构造器

    默认构造器

无参构造器

构造方法内可能有参数,也可能没有任何参数。如果构造函数不接受任何参数,则称为无参数构造器。例如上述代码中 Person 构造器

    public Person() {
        age = 10;
    }

有参构造器

具有参数的构造器,可用于为不同对象提供不同值

复制代码
    String name;

    public Person(String name) {
        this.name = name;
        System.out.println("名字:"+name);
    }

    public static void main(String[] args) {
        Person person1 = new Person("小赵");
        Person person2 = new Person("小钱");
        Person person3 = new Person("小孙");
        Person person = new Person("小李");
    }
复制代码

运行结果:

默认构造器

如果我们不创建任何构造函数,Java 编译器会在程序执行期间自动创建一个无参数构造函数。

 

 

原生方法和构造器的区别

  • 构造函数必须与在 Java 中定义的类具有相同的名称
  • 当方法没有返回任何值时,构造函数不会返回任何类型,而方法则具有返回类型或 void
  • 在对象创建时,仅调用构造函数一次,而方法可以被调用任何次数

如果我们不用构造器来给属性赋值的话,可以先使用 new 运算符获取类的实例,并使用类的 setter 方法设置值,如下:

复制代码
import java.util.Arrays;

public class Person {

    private String name;
    private int age;

    public String toString(){
        return Arrays.asList(name,String.valueOf(age)).toString();
    }
    public void setName(String name){
        this.name = name;
    }
    public void setAge(int age){
        this.age = age;
    }
}
class Main
{
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("小赵");
        person.setAge(22);
        System.out.println(person);
    }
}
复制代码

通过构造器进行初始化就可以省去我们的 setter 方法:

复制代码
import java.util.Arrays;

public class Person {

    private String name;
    private int age;

    public Person(String name,int age){
        this.age = age;
        this.name = name;
    }
    public String toString(){
        return Arrays.asList(name,String.valueOf(age)).toString();
    }
}

class Main
{
    public static void main(String[] args) {
        Person person = new Person("小赵",22);
        System.out.println(person);
    }
}
复制代码

运行结果:同为  [小赵, 22]

构造器重载

与 Java 方法重载类似,我们也可以创建两个或多个具有不同参数的构造函数。这称为构造函数重载。

复制代码
public class Person {

    String name;

    public Person(){
        this.name = "小王";
    }

    public Person(String name){
        this.name = name;
    }

    public void getName(){
        System.out.println("姓名:"+this.name);
    }

    public static void main(String[] args) {

        Person person1 = new Person();
        Person person2 = new Person("小赵");

        person1.getName();
        person2.getName();
    }
}
复制代码

运行结果:

拷贝构造器

Java 中的拷贝构造方法是一种使用该类的一个对象构造另外一个对象的构造方法。

复制构造函数是一种特殊构造函数,用于将新对象创建为现有对象的副本。它只需要一个参数,它将是同一类的另一个实例。我们可以使用 this () 语句从复制构造函数中显式调用另一个构造函数:

复制代码
public class Person {

    private String name;

    public Person(String name){
        this.name = name;
    }

    public Person(Person person){
        this.name = person.name;
    }


    public void getName(){
        System.out.println("名字:"+this.name);
    }

    public static void main(String[] args) {

        Person person0 = new Person("小赵");
        Person person1 = new Person(person0);

        person0.getName();
        person1.getName();
    }
}
复制代码

运行结果:

名字:小赵
名字:小赵

快捷键

Alt+Ins

 

本文作者:ywwwik

本文链接:https://www.cnblogs.com/ywwwik/p/16714052.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   ywwwik  阅读(175)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.

作曲 : Reol

作词 : Reol

fade away...do over again...

fade away...do over again...

歌い始めの一文字目 いつも迷ってる

歌い始めの一文字目 いつも迷ってる

どうせとりとめのないことだけど

伝わらなきゃもっと意味がない

どうしたってこんなに複雑なのに

どうしたってこんなに複雑なのに

噛み砕いてやらなきゃ伝わらない

ほら結局歌詞なんかどうだっていい

僕の音楽なんかこの世になくたっていいんだよ

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.

目の前 広がる現実世界がまた歪んだ

目の前 広がる現実世界がまた歪んだ

何度リセットしても

僕は僕以外の誰かには生まれ変われない

「そんなの知ってるよ」

気になるあの子の噂話も

シニカル標的は次の速報

麻痺しちゃってるこっからエスケープ

麻痺しちゃってるこっからエスケープ

遠く遠くまで行けるよ

安定なんてない 不安定な世界

安定なんてない 不安定な世界

安定なんてない きっと明日には忘れるよ

fade away...do over again...

fade away...do over again...

そうだ世界はどこかがいつも嘘くさい

そうだ世界はどこかがいつも嘘くさい

綺麗事だけじゃ大事な人たちすら守れない

くだらない 僕らみんなどこか狂ってるみたい

本当のことなんか全部神様も知らない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.