1.抽象类,抽象方法。
抽象方法只能够定义在抽象类中。
也可以反推,如果一个类有抽象方法,那么这个类一定是抽象类。
抽象类中也可以含有具体方法。
一个类继承了抽象类,那么必须实现其所有的抽象方法,否则要定义成抽象类。
抽象方法在无论是通过抽象类定义的还是通过接口定义的在非抽象子类中都必须实现。
2.接口
接口中的所有方法都是抽象方法。这个和抽象类区分。
接口中的方法的定义可以省略abstract关键字,默认的就是抽象方法。
接口中的属性都是final,static,public的
3.静态方法
子类中不能重写父类的静态方法。可以有同类型的静态方法。(方法名和参数相同)
子类静态的不能覆盖父类非静态方法。
不能访问非静态的成员变量。
不能在静态方法里面用this
4.final
final方法是不能被重写的。
final对象如果是一个类,那么不能改变引用。但可以改变引用对象中的类容。
例如:final A a = new A();
不能用 a = new B();
而可以改变 对象中的非final属性。
final成员变量一定要付初值
5.静态代码块
public class Test
{
public static void main(String[] args)
{
P p = new P();
}
}
class P
{
static
{
System.out.println("Hello world!");
}
}
红色的代码块就是静态代码块,当主函数运行到 P p = new P(); 的时候,就从硬盘上将class P文件放到java虚拟机上,然后直接调用静态代码块,先于构造函数执行。无论声明多少个对象,只调用静态代码块一次。
继承中,先执行父类的静态代码块。