今天学的少了点…
构造器 Constructor(构造方法)
[修饰符列表] 构造方法名 (形参){
构造方法体;
通常在构造方法体中给属性赋值,完成属性的初始化
}
构造方法的两个特点:
- 必须和类名相同
- 必须没有返回值,也不能写void。写上void就表示普通方法,而不是构造方法
当一个类没有提供任何构造方法,系统会默认提供一个无参数的构造方法。(这个构造方法被称为缺省构造器)
构造方法的作用:
- 创建对象
- 初始化对象的值
new 本质是在调用构造方法
封装
- 属性私有化(private)
- 一个属性对外提供:set方法和get方法。外部只能通过set()、get()方法设置,从而保证数据的安全性
package Demo;
public class Test_Student {
private String name;//设置私有属性
//无参构造
public Test_Student() {
this.name = "DMIND";
}
//有参构造
public Test_Student(String name){
this.name = name;
}
//getName()
public String getName(){
return this.name;
}
//setName
public void setName(String arg){
this.name = arg;
}
}
Static
如果某个类型的所有对象的某个属性值都是一样的,不建议定义为实例变量,浪费内存空间。
建议定义为静态变量,在方法区内只保留一份,节省内存开销。
① 实例的,都是和对象相关的。都是先new对象,访问时采用:引用.
的方式访问
② 静态的,都是和类相关的。访问时建议采用:类名.
的方式访问,当然也可以采用"引用."
的方式访问
。不需要new对象
package Demo;
public class Test_static {
//实例变量
int i = 10;
//实例方法
public void m1(){}
//静态变量
static int k = 10;
//静态方法
public static void m2(){}
}
Static静态代码块
定义:
Static{
code....
}
特点:类加载时执行,并且每个静态代码块只会执行一次。
注意:静态代码块在类加载时执行,并且在main方法前执行
public class Test_static {
static {
System.out.println("First");
}
public static void main(String[] args){
System.out.println("Third");
}
static {
System.out.println("Second");
}
}
//First
//Second
//Third
实例语句块
语法:
{
code....
}
每调用一次构造方法,就会调用一次实例语句块。因而如果构造方法中有一部分重叠的代码,可以放在实例语句块中。
代码执行顺序
静态代码块 -> main函数 -> 实例语句块 -> 构造函数
public class Test_InstanceCode {
static {
System.out.println("静态代码块");
}
//入口
public static void main(String[] args){
System.out.println("main方法");
new Test_InstanceCode();
new Test_InstanceCode("dwa");
}
//实例语句块
{
System.out.println("实例语句块");
}
// {
// System.out.println("实例语句块2");
// }
//Constructor
public Test_InstanceCode(){
System.out.println("无参数构造方法");
}
//Constructor
public Test_InstanceCode(String name){
System.out.println("有参数构造方法");
}
}
/*
静态代码块
main方法
实例语句块
无参数构造方法
实例语句块
有参数构造方法
*/