Day02-main方法和代码块
main()方法的使用说明
-
main()方法作为程序的入口
-
mian()方法也是一个普通的静态方法
-
main()方法可以作为我们与控制台交互的一种方式.(之前使用的是Scanner)
pubic static void main(String[] args){ //1(多态) Person p=new Man(); p.eat(); //P.earnMoney() //2 Man man=new Man(); man.eat(); man.earnMoney(); }
为什么要用第1段代码而不用直接用第2段代码?
因为写方法的时候不知道有当前类有多少子类,有什么子类,说以会在形参里面直接用父类,比如上面可以在方法里面用person,而在new的时候直接new一个Man.
类的成员之四:代码块(或初始化块)
- 代码块的作用:用来初始化类,对象
- 代码块如果有修饰的话,只能使用static
- 分类:静态代码块 vs 非静态代码块
- 静态代码块
- 内部可以有输出语句
- 随着类的加载而执行,而且只执行一次
- 作用:初始化当前类的信息
- 如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
- 静态代码块的执行优先于非静态代码块的执行
- 静态代码块内只能调用静态的属性,静态的方法,不能调用非静态的结构
- 非静态代码块
- 内部可以有输出语句
- 随着对象的加载而执行
- 每创建一个对象,就执行一次非静态代码块
- 作用:可以在创建对象时,对对象的属性进行初始化
- 如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行
- 非静态代码块内只能调用静态的属性,静态的方法,可以调用静态的属性和方法,或调用非静态的属性和或方法
对属性可以赋值的位置
- 默认初始化
- 显式初始化
- 构造器中初始化
- 有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值
- 在代码块中赋值
由父及子,静态先行
执行的顺序:
默认初始化 >显式初始化/在代码块中赋值 > 构造器中初始化 > 有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值