Java笔记,构造函数(一)

构造方法的作用:

  • 1、创建对象

  • 2、创建对象的同时,初始化实例变量的内层空间 (给实例变量赋值)。

成员变量之实例变量,属于对象级别的变量,这种变量必须先有对象才能有实例变量。

实例变量没有手动赋值的时候,系统默认赋值,那么这个系统默认赋值是在什么时候完成的呢?是在类加载的时候吗?
不是,因为类加载的时候只加载了代码片段,还没来得及创建对象。所以此时实例变量并没有初始化。
实际上,实例变量的内存空间是在构造方法执行过程当中完成开辟的。完成初始化的。系统在默认赋值的时候,也是在构造方法执行过程当中完成的赋值。

关于java类中的构造方法:

  • 1、构造方法又被称为构造函数/构造器/Construator

  • 2、构造方法语法结构:
      [修饰符列表] 构造方法名 (形式参数列表){
       构造方法体;
      }

  • 3、回顾普通方法的语法结构:
      [修饰符列表] 返回的类型 方法名 (形式参数列表){
        方法体;
      }

  • 4、对于构造方法来说,“返回值类型”不需要指定,并且也不能写void,
    只要写上void,那么这个方法就成为普通方法了。

  • 5、对于构造方法来说,构造方法的方法名必须和类名保持一致。

  • 6、构造方法的作用?
    构造方法存在的意义是,通过构造方法的调用,可以创建对象。

  • 7、构造方法应该怎么调用?
    普通方法是这样调用的:
      方法修饰符中有static的时候:类名.方法名(实参列表)
      方法修饰符中没有static的时候:引用.方法名(实参列表)
       - new 构造方法名(实参列表)

  • 8、构造方法调用执行之后,有返回值吗?
    每一个构造方法实际上执行结束之后都有返回值,但是这个"retu.rn 值:”这样的语句不需要写。构造方法结束的时候java程序自动返回值。
    并且返回值类型是构造方法所在类的类型。由于构造方法的返回值类型就是类本身,所以返回值类型不需要编写。

  • 9、当一个类中没有定义任何构造方法的话,系统默认给该类提供一个无參数的构造方法,这个构造方法被称为缺省构造器。

  • 10、当一个类显示的将构造方法定义出来了,那么系统则不再默认为这个类提供缺省构造器。建议开发中手动的为当前类抛供无参對构造方法。因为无参数构造方沐太常用了。

  • 11、构造方法支持重载机制。在一个类当中编写多个构造方法,这多个构造方法显然已经构成方法重载机制。

“构造器”类(Constructor.class)

public class Constructor {
    
    

    public static void main(String[] args) {
    
    

        // 创建User对象
        // 调用User类的构造方法完成对象的创建
        // 以下程序创建了4给对象,只要构造函数调用就会创建对象,并且一定是在"堆内存"中开辟内层空间
        User u1 = new User();  // new User 中的User是构造方法名,因为,调用方法需要加()
        User u2 = new User(10);
        User u3 = new User("zhangsna");
        User u4 = new User(10,"zhangsan");

        // 调用本类带static的doSome方法
        // 类名.方法名();
        Constructor.doSome();
        doSome();  // 因为在本类中所以类名可以不写。
        // 调用本类不带static的doOther方法
        // 引用.方法名();
        Constructor t = new Constructor();
        t.doOther();

    }

    // 在本类中定义带static修饰符的方法
    public static void doSome(){
    
    
        System.out.println("do some!");
    }

    // 在本类中定义不带static修饰符的方法
    public void doOther(){
    
    
        System.out.println("do Other!");
    }
}

用户类(User.class)

public class User{
    
    

    // 这是一个无参数构造方法,不写也存在
    // 因为,定义了有参构造函数,系统默认的无参数构造方法就会消失
    // 所以,要调用无参构造方法时,一定要把无参数构造方法写上
     public User(){
    
    
     }

    // 有参数的构造方法
    public User(int i){
    
    
        System.out.println("带有int类型的构造器");
    }

    public User(String name){
    
    
        System.out.println("带有String类型的构造器");
    }

    public User(int i,String name){
    
    
        System.out.println("带有int,String类型的构造器");
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44630560/article/details/105728065