- java的构造方法
new +构造方法 去创建一个对象
跟普通方法的区别:
1.构造方法没有返回值类型的声明
2.每一个类至少有一个构造方法
如果没有生命JVM会默认给一个无参数的构造方法,一旦声明了构造方法就不在默认给你。
3.构造方法名称必和须跟类名一致
4.构造方法的调用
public Person()
{
System.out.printf("构造方法");
}
注意:如果写成了public void Person() 就成了普通的方法了
普通方法:对象存在,通过变量名.方法名()调用
构造方法:new 构造方法名()调用,一旦new构造方法()就创建一个新的对象
构造方法只存在对象创建的时候调用
作用:语法规定通过new+当前类的构造方法去创建一个对应的类型的对象。
实际中对象是否创建时由new决定,构造方法是在对象创建成功之后执行的,用于做初始化设置,并且构造方法只在当前对象创建成功时执行一次,以后就不会执行。
注意:一般情况下我们会声明参数的构造方法,在对象创建的对成员变量进行赋值(复用性)
- 方法重载 overload
java中允许在一个类中声明多个名称一样,但是参数不同的多个方法
作用:在创建对象的时候初始化的时候提供多种需求。
调用:
根据实际传入的参数来识别。
参数不同:
1.参数的个数不同。
2.参数的类型不同。
3.参数类型的顺序不同,也算不同(前后参数类型需要不同)
注意:在方法重载中,当严格匹配匹配不到方法时候,就会通过就近匹配方法。
就近匹配:按照参数的默认转换的原则
注意:一旦就近匹配到多个方法的时候会出现语法的错误,就需要按照严格匹配。
注意:重载对个构造方法一般是为了在创建对象的时候,可以提供多种初始化设置供使用者选择。
-
this
1.隐含的局部变量
在方法中指向调用该方法的对象()
使用:当成员变量与局部变量同名的时候,通过this说明哪一个是成员变量。(this指向的是成员变量)
F11进入调试状态
F5进入构造方法
使用场景.png
不加this 成员变量和局部变量同名,局部变量的优先级会比较高
这样会能知道改填什么参数.png
2.作为当前类的构造方法名存在
作用:在构造方法第一句话去调用其他重载的构造方法(ps:放在第一句话是为了只声明一个对象。)
实现代码复用.png
- 静态修饰符 static
作用:修饰成员变量、方法
修饰成员变量,该成员变量就是静态的成员变量,不在依赖与对象,是这个类所有对象共有的。
注意:静态的成员变量在类加载的时候会被创建(对象生成之前就创建了),并且只会被创建一次。
使用:类名.静态成员变量名(因为不论是哪一个对象改变静态变量都会改变,所以可以直接类名来调用)
执行结果都为22.png
name指向相同的常量.png
2.修饰方法,该方法就变成静态方法,不在依赖于某个对象(方法里面没有使用到任何一个成员变量)。
使用:类名.静态的方法名(参数);
与非静态方法的区别:
非静态的方法调用的前提:对象存在。
非静态的方法什么都可以调用
静态的方法不可调用非静态的成员变量以及方法(成员变量不知道是哪一个变量)