1: 构造函数
构造函数,是一种特殊的方法。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载
访问修饰符 构造方法名 ( ) {
//初始化代码
}
主要特点
(1)构造函数的命名必须和类名完全相同。在java中普通函数可以和构造函数同名,但是必须带有返回值;
(2)构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的;
(3)构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;
(4)当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数。此默认构造函数是不带参数的。而一般的方法不存在这一特点;
(5)构造函数有回滚的效果,构造函数抛出异常时,构造的是一个不完整对象,会回滚,将此不完整对象的成员释放(c++)
(6)当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。
(7)在Python中构造函数必须通过重写__init__方法实现
2: 构造函数的作用:就是给属性进行赋值的:也叫对象的初始化,每一个类都会有一个默认的构造函数
构造函数:就是方法名和类名完全一致的函数他没有返回值类型也没有void,如果我们写了构造函数,那么默认的构造函数将不存在
不能够被调用
3: 构造函数的重载:
重载:方法名与类名相同,但是参数不同,参数的类型不同和数量不同: 作用:就是同样的方法实现不同的功能
构造函数的重载:方法名与类名相同,但是参数不同,参数的类型不同和数量不同,但是没有返回值没有void
4: static 关键字:静态的
修饰属性:全局变量,优先被加载
修饰的方法被成为,静态方法:不用对象也可以进行调用,可以通过类型.方法
修饰代码块: 优先被加载,并且只加载一次
他不可以修饰局部变量
static修饰的对象:
static关键字可以修饰:局部变量、全局变量、函数
static修饰后改变了什么?
1.改变了生存周期;就是一个变量、函数从分配内存去表示到回收内存的过程
2.改变了作用域;就是可以在哪些文件里可以使用该函数
static修饰不同对象时的作用:
(1)局部变量:
局部变量就是在函数内定义的变量,普通的局部变量,生存周期是随着函数的结束而结束,每次函数重新执行,局部变量都是新的值,不会保留上次的值。当用static修饰后,局部变量的生存周期就是当程序结束才会结束。再次调用函数时,用static修饰的变量会保留上一次的值。
应用:在函数内,我们想保留某些变量上一次的值,就可以用static去修饰该变量。比如:想统计该函数被执行的次数时,就可以定义被static修饰的int型变量,没执行一次该变量就++。
总结:用static修饰的局部变量,改变了生存周期,但是没有改变其作用域。改变其生存周期的原因是被static修饰的局部变量被存放在.bss段或者.data段,而普通的局部变量是存放在栈上的。
(2)全局变量:
全局变量用static修饰改变了作用域,没有改变生存周期。普通的全局变量是可以被其他的.c文件引用的,一旦被static修饰,就只能被定义该全局变量的.c文件引用,使得该全局变量的作用范围减小。
作用:当一个全局变量不想被其他.c文件引用时,可以用static修饰,这样其他的文件就不能通过extern的方式去访问,这样主要是为了数据安全。
总结:改变其作用域,没有改变生存周期。
(3)函数:
函数用static修饰,改变了作用域。普通的函数是可以通过头文件声名的方式被其他文件调用,被static修饰后就只能在本文件里被调用,这样是为了数据的安全。
作用:有些函数并不想对外提供,只需要在本文件里调用,这时候就可以用static去修饰。
总结:改变了作用域,没有改变其生存周期。
补充:
用static修饰全局变量和函数,除了上面说的数据安全,防止被误引用,还有一个作用是解决重名问题。当用static修饰了全局变量和函数后,其他文件里再定义同名的全局变量和函数也是可以的。一般来说,如果不是要对外提供的函数和全局变量,最好都用static修饰。
5: final 关键字:最终的:用final修饰的变量称为 常量,其值固定不变
(1)final关键字在Java中被称为完结器,表示最终的意思。
(2)final能声明 类,方法,属性:
使用final声明的类不能被继承
使用final声明的方法不能被重写
使用final声明的变量变成常量,常量是不可以被修改的