Abstract(抽象):
Public abstract void work(); <==> public void work(){ } 抽象方法,存在于抽象类中, 提供一个方法重写
New Person(); 抽象类不能被实例化
抽象类中不一定要有抽象方法但抽象方法一定在抽象类中,可以用父类引用引用子类对象
抽象类变成非抽象类必须实现所有抽象(且没有给出)的方法体!
Final 不能与abstract 一起使用,static 不能与abstract一起使用(因为abstract希望别人来修改,来重写,static不支持重写,final不支持修改)
Interface(接口)(也是抽象的):
- 没有构造器
- 解决多继承
Interface Animal{} interface Food{} class Fish implements Animal,Food{}
- 接口中定义变量必须赋初值,且不能用代码块,接口中的成员变量默认都是public, static, final类型,必须被显式初始化
- 一个类只能继承一个直接的父类,但是可以实现多个接口,用implements
- abstract问题:省略方法必须加abstract
- 接口编译下来也是.class文件
- 接口可以继承接口,用extends,接口支持多继承
- 接口中都是些抽象方法,作为它的实现类(子类)必须实现它的方法
- 用于制定规则
- 接口是抽象类的另外一种形式
接口是抽象类的抽象,抽象类可存在有方法体的方法,接口中的方法全部为抽 象方法;
11. 接口中的所有方法均是抽象方法, 默认都是public、abstract类型的;
public interface A {
void method1(); //合法,默认为public、abstract类型
public abstract void method2();//合法,显示声明为public、abstract类型
}
接口中的成员变量默认都是public, static, final类型,必须被显式初始化;
public interface A {
int CONST = 1; //合法,CONST默认为public, static, final类型
public static final int OPAQUE = 1; //合法,显示声明为public static final 类型
}