内部类的作用是实现多重继承
内部类特性:
Inner class作为类的成员
1.可以声明为final的
2.和外部类不同,Inner class可声明为private或protected
3.Inner class可以声明为static的,但此时就不能再使用外层类的非static的成员变量
Inner class作为类
可以声明为abstract类,因此可以被其他的内部类继承
内部类主要是解决java不能多重继承的问题
代码块
初始化块:
public class Test{
{
System.out.println("");
}
static{
System.out.println("");
}
}
初始化块的作用:对java对象进行初始化
public class Person {
String name;
public Person(){
this.name="张三";
System.out.println("执行的是构造方法");
}
//非静态的代码块
{
System.out.println("执行的是非静态代码块");
}
}
在new Person执行的时候
1.类的属性的默认初始化和显示初始化
2.执行代码块的代码
3.执行构造器的代码
静态代码块:
只能使用静态的属性和方法且只被执行一次
匿名Person类
Person p=new Person(){
/**
* 问题:现在想把name改成李四,但是不想动Person里面的代码
* 方法:在匿名内部类中用代码块代替构造方法
*/
{
super.name="李四";
}
@Override
public void test() {
System.out.println("==========");
}
};
System.out.println(p.name);
p.test();
运行结果:
李四
这种类没有类名,就不能显示的new的方法创建对象,如果要是还有在构造器中初始化属性就没有办法了,这样情况就要用代码块{}初始化工作了