接口(特殊的抽象类):interface
定义:接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现
是一种特殊的抽象类,使用interface表示声明,抽象方法无需实现。
接口中成员变量默认是:public static final int num=0;(ps:变量也只能是这种类型,这三种修饰符可以相互改变位置)
接口中方法是:public abstract int test();(ps:如不写public,编译通过,运行可能出现错误)
接口中是无构造方法
特性:
1.接口可以多重实现
2.接口中声明的属性默认为public static final ;也只能是public static final
3.接口只能定义抽象方法,而且这些方法默认是public abstract的也只能是public的
4.接口可以继承其它的接口,并添加新的属性和抽象方法
注意:
1.多个无关的类可以实现同一个接口
2.一个类可以实现多个无关的接口
3.与继承关系类似,接口与实现类之间存在多态性
类-类 继承 接口--接口 继承 类---接口 实现
内部类:
1.局部类部类
定义在方法中的内部类,如果内部类要使用局部变量必须是这个变量必须是final类型的( ps:因为当调用这个方法时,局部变量如果没有用final修饰,他的生命周期和方法的生命周期是一样的,当方法弹栈,这个局部变量也会消失,那么如果局部内部类对象还没有马上消失想用这个局部变量,就没有了,如果用final修饰会在类加载的时候进入常量池,即使方法弹栈,常量池的常量还在,也可以继续使用)
2.成员类部类
定义在一个类的内部方法外
1.私有的成员内部类
2.静态的成员内部类
3.匿名内部类(一种特殊局部内部类)
定义在一个对象内中,如:
new Thread(new Runner(){
//此处就是一个匿名的内部类(形式:new 接口/类,形成的就是其实现接口的子类或继承类的子类)
});
注意:方法调用完成后这个类还是存在的
调用内部类
生成内部类对象:
普通的内部类生成:
内部类 变量名=new 外部类().new 内部类();
静态的成员内部类:
内部类 变量名=new 外部类名.内部类();
调用内部类的普通方法:
内部类对象.内部类中的方法名()
调用内部类的静态方法
内部类名称调用.方法名