Java面向对象篇-构造方法、this、static

目录

  • 构造函数
    • 构造方法的语法
    • 注意
    • 重载
      • 三个方面的不同
      • 注意
  • 关于this(没太多要说的,和C++相像)
    • 用处
  • 关于static
    • 静态成员变量
    • 静态成员方法
    • 注意

构造函数

创建对象的时候默认会调用构造方法来创建对象,(在堆中开辟空间),可以完成成员变量的某些初始化操作。

另外不同于C++,Java不再提供默认构造函数。

构造方法的语法

方法名称:构造方法的方法名称必须跟类的名称保持一致

访问修饰符:封装部分

形参:可以用户自定义添加,跟方法的普通参数一样

方法体:完成对象的初始化功能

返回值:没有返回值

注意

  1. 创建完类之后,如果没有手动调用构造方法,会有一个默认的无参的构造方法供调用
  2. 当用户自定义了构造方法之后,默认的无参构造方法就不能够使用了,必须要手动定义无参构造方法
  3. 同一个类中可以包含多个同名的构造方法

重载

在一个类中可以包含多个重名的方法,但是注意方法的参数列表不能相同。

三个方面的不同

  1. 参数的个数不同
  2. 参数的类型不同
  3. 参数的顺序不同

注意

一般构造方法都会进行重载(一个类中可能包含多个属性值,当只需要给部分属性初始化的时候需要调用不同的构造方法)。

public class Person {
    int age;
    String name;

    public Person() {
        System.out.println("无参构造函数");
    }

    public Person(int age, String name) {
        System.out.println("int String有参构造");
    }

    public Person(String name, int age) {
        System.out.println("String int有参构造");
    }

    public Person(String name) {
        System.out.println("String有参构造");
    }

    public static void main(String[] args) {
        Person p1 = new Person(); // 无参构造函数
        Person p2 = new Person(1, "");
        Person p3 = new Person("", 1);

    }
}

在这里插入图片描述

关于this(没太多要说的,和C++相像)

指向当前对象,表示当前对象的引用

用处

  1. 当方法中的参数名称跟类的成员变量名称一样的时候,可以使用this代表当前对象。

    注意:有了this之后,可以将构造方法的参数跟成员变量保持一致。

    当构造方法中需要调用其他的构造方法时,可以使用this(name)调用其他构造方法,但是必须位于方法体的第一行
    Java面向对象篇-构造方法、this、static_第1张图片

  2. 普通方法中,当多个普通方法之间需要调用的时候,可以使用this来进行调用,指的是当前对象的其他方法。

关于static

静态成员变量

修饰成员变量的时候,表示静态成员变量(类变量)

普通变量在使用的时候,必须要通过对象名进行调用

类变量或者静态变量可以使用对象名调用也可以使用类名进行

静态成员方法

修饰方法的时候,表示静态方法或者叫类方法

普通方法在使用的时候,必须要通过对象名进行调用

类方法(静态方法)可以使用类名,也可以使用对象名

注意

  1. 静态变量,在创建对象之前被初始化,或者说在类被载入之前进行初始化。
    Java面向对象篇-构造方法、this、static_第2张图片
    结果为:1。

  2. 静态变量被所有的对象共享,属于公共变量,对象和类都可以直接调用,但是推荐使用类来调用

  3. 成员变量放在中,而静态变量放在方法去中静态区

  4. 静态变量不能定义在静态方法中。
    Java面向对象篇-构造方法、this、static_第3张图片

  5. 静态方法可以在非静态方法中进行调用。

  6. 静态方法中不能直接调用非静态方法。
    Java面向对象篇-构造方法、this、static_第4张图片
    在这里插入图片描述

  7. 静态方法中不允许出现this或super调用,因为静态方法属于类,而不是属于某个对象。

  8. 一般工具类中的方法定义为static。

你可能感兴趣的:(Winner,Winner,Java,Dinner,java,开发语言)