1 抽象类
含有抽象方法的类,关键词abstract
abstract public void shout(); //抽象方法
}
不能实例化,继承子类必须实现
2 接口
只能public或默认
extends可以多继承
属性总是public static final 方法总是public abstract
子类由implements来实现
不能创建实例 但可以声明这种变量类型的引用
jdk1.8之后可以包含普通的静态方法
3 内部类
总之我的理解内部类就相当于一个属性,所以可以使用public、default、protected 、private以及static修饰
3.1 非静态内部类
简而言之就是非静态属性
所以一定要从属于一个外部对象
所以可以访问外部成员,但外部不能访问内部(因为没有内部对象)
不能有静态方法,属性,初始化块(不能非静态又静态这样混杂)
访问外部类属性:外部类名.this.变量名
外部类之外创建内部类实例
Outer.Inner varname = new Outer().new Inner()
3,2 静态内部类
static
class
ClassName
相当于外部类的静态属性
创建实例
Outer.Inner inner =new Outer.Inner()
3.3 匿名内部类
只用一次
new 父类构造器(实参类表) \实现接口 () {
//匿名内部类类体!
}
this.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
3.4 局部内部类
作用域仅在方法中