【java】构造方法-yyds

本文详细讲解了Java中构造方法的作用、形式、调用方式、重载规则以及注意事项,包括无参构造、带参数构造和自动调用。实例演示了如何利用构造方法进行对象初始化,以及为何在已有参数构造时需要考虑无参构造方法的存在。
摘要由CSDN通过智能技术生成

java中构造方法及其作用

1.形式:与类名相同, 构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。
格式:

public 类名称(参数类型 参数名称){
        方法体

```java
class Person{
public Person(){
}
}


下面这种形式是普通的方法

```java
public void Person(){
}

2…引入
在这里插入图片描述

3…作用:

  • 构造方法作用就是对类进行初始化。 如果你没有定议任何构造方法的形式,程式会为你取一个不带任何参数的构造函数,那么你产生类的对像时只能用不带参数的方法,如:class a {}//没有任何构造函数。

数据的来源有两种:
1.外部传入进来(通过构造方法的参数)
2.在内部写死~

  • 构造方法就是与类同名的那个方法,它的作用是可以用来初始化,例子如下
class Person //人类{
public Person //无参构造方法,系统默认
{
}
public Person(String n,int a) //构造方法

{
 name = n; age = a;
}
 private string name;
 private int age;
}



class Main{
public static void main(String[] args){
Person q = new Person();/
Person p = new Person("张三",14);//这就是作用
}
}

  • new一个对象的时候要用到构造函数,上述Mian类中new Person(“张三”,14);
    例如Person q = new Person());这时调用的是Person的无参数构造方法;
    Person p = new Person(“张三”,14);;这个是调用Person有参数构造方法,
  • 在JAVA中如果不写构造方法的话,会默认加上一个无参数的构造方法,但是如果已经有了一个有参数的构造方法,那么无参数的构造方法就不会默认被加上.此时,若想调用无参构造方法,就需要定义一个无参构造方法。
    如果Person类中已经有了一个有参数的构造方法,这时再使用 Person q = new Person()来创建对象的时候就会出错,这就是为什么书上要强调写了有参数的构造方法就最好加一个无参数的构造方法.

4…构造方法特征

java中构造方法对类初始化
1.构造方法的方法名和类名相同
2.构造方法没有返回值(没有return语句,但是可以理解成返回了对象本身)
3.构造方法不需要显示的调用,而是在new的时候自动被调用
4…每一个类中一定至少存在一个构造方法,如果没有明确定义,则系统自动生成一个无参的构造方法
在这里插入图片描述

public class Test {
    public int a;
    public short b;
    public  long c;
    public Test( int num){
        a=num;
    }

}

public class Main {
    public static void main(String[] args) {
       Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int num=scanner.nextInt();
       Test test =new Test(num);
        System.out.println(test.a);


    }
}

5.构造方法重载
在这里插入图片描述

注意事项:
1.构造方法的名称必须和所在类的名称完全一样。
 2.构造方法不要写返回值类型,连void都不写
3.构造方法不能return 一个具体的返回值。 4.如果没有编写任何构造方法,那么编译器将赠送一个构造方法,没有参数,方法体什么也不做。  public Student(){}
 5.一旦编写了至少一种构造方法,那么编译器将不再赠送。
 6.构造方法也是可以重载的。

 重载:方法名称相同,参数列表不同
 

```java
public class Student {
    //成员变量
    private String name;
    private int age;
    //无参数的构造方法
   public Student(){
        System.out.println("无参构造方法执行啦");
    }
    //全参数的构造方法
   public Student (String name,int age){
       System.out.println("全参构造方法执行啦");
       this.name=name;
       this.age= age;
   }
   public void setName(String name){
       this.name=name;
   }
   public String getName(){
       return name;
   }
   public void setAge(int age){
       this.age=age;
   }
   public int getAge(){
       return age;
   }
}

public class Demo01Person {
    public static void main(String[] args) {
        Person person =new Person();
        //设置自己的名字
        person.name="王健林";
        person.sayHello("王思聪");//who 自动出现



    }



}

构造方法可以使用alt+Insert,也可以自己写

alt+Insert 生成构造方法,是最通用的版本,构造方法的目的是为了初始化数据,
具体初始化的数据:可以通过参数列表传到构造方法,也可以直接在构造方法写

package BookSystem;
//通过这个类把多个Book对象组织
public class BookList {
    //100是数组的最大容量
    private Book[] books =new Book[100];
    //当前数组的数量
    private  int size=0;

    //这里为啥不用alt+Insert 生成构造方法了?
    //alt+Insert 生成构造方法,是最通用的版本,构造方法的目的是为了初始化数据,
    //具体初始化的数据:可以通过参数列表传到构造方法,也可以直接在构造方法写
    public BookList(){
        books[0]=new Book("三国演义","罗贯中",100,"古典小说");
        books[1]=new Book("西游记","吴永恩",100,"古典小说");
        books[2]=new  Book("金瓶梅","兰陵笑笑生",100,"古典小说");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值