JavaSE——类与对象(下)
类与对象
- 属性
属性赋值的先后顺序:
1、默认初始化
2、显示初始化/代码块中初始化
3、构造器中初始化
4、有了对象以后,可以通过“对象.属性”赋值。
- 方法
- 构造器
见类与对象上 - 代码块
代码块的作用:用来初始化类、对象
代码块如果有修饰的话,只能使用static
1、静态代码块:内部可以有输出语句;随着类的加载而执行,而且只执行一次。
2、非静态代码块:内部可以有输出语句;随着对象的加载而执行,而且每创建一次对象,执行一次。
注意
执行顺序:由父及子,静态先行
父类静态代码块–>子类静态代码块–>父类非静态代码块–>父类构造器–>子类非静态代码块–>子类构造器
- 内部类
如何创建内部类
public class test {
public static void main(String[] args) {
People.dog a=new People.dog();
a.fun();
People b=new People();
People.cat c=b.new cat();//注意非静态内部类的调用方法
c.fun();
}
}
class People{
private int age;
static class dog{
public void fun(){
System.out.println("这人养了狗");
}
}
public class cat{
public void fun(){
System.out.println("这人养了猫");
}
}
}
内部类如何调用外部类方法和属性
public class world {
public static void main(String[] args) {
//静态成员内部类实例化
world atest = new world();
world.Btest btest = atest.new Btest();
btest.say("18");
}
public static String name = "张三";
public String age = "23";
class Btest{
public String age = "22";
public void say(String age){
System.out.println("我是输出的形参参数,age = " + age);
System.out.println("我是输出的Btest类成员变量,age = " + this.age);
System.out.println("我是输出的world类成员变量,age = " + world.this.age);
}
}
}