1. 抽象 abstract
1.1 抽象是什么?
抽象类往往表示设计中得出的抽象概念。
比如动物只是一个抽象的概念,并不能表示一个实体。
abstract : 修饰符, 修饰的类是抽象类, 修饰的成员方法就是抽象方法
抽象方法:使用 abstract 修饰的成员方法,并且该方法没有方法体,就是没有大括号。
抽象类:不能被实例化,只能用于被继承。
抽象方法必须在抽象类中,一旦继承了这个抽象类,就必须要实现抽象类中的所有抽象方法。
实现:子类对抽象方法加上方法体,完成功能实现。
含有抽象方法的类型一定是抽象类。
抽象类和普通类几乎完全一样,只有两点不同
1.不能创建对象 2.可以用抽象方法。
抽象类继承抽象类,可以实现0~n个抽象方法, 普通类继承抽象类,必须实现所有的抽象方法。
2.接口 interface
1.1 接口是什么?
接口是一种引用数据类型,可以看做是一个特殊的类,是为了解决java中单继承功能变弱的问题。
一个类只能继承一个父类,但是可以实现N个接口。
语法:
1.[修饰符] interface 接口
{
}
2. JDK 1.8 之前,接口中只有抽象方法和常量( public static final ) -2147483648~2147483647
3.接口中 public static final 还有 abstract 都可以省略(接口中没有变量,只要常量,写个方法就是抽象方法)
4.接口 没有构造方法,不能创建对象。
5. 一个类实现一个接口,需要实现所有的抽象方法
6.一个抽象类,实现一个接口,可以实现0~N个方法。 /*类和接口之间是多实现,*/ class D extends Object implement A,B
新特性:
1.8 之前 只能有抽象方法
1.8 开始,可以有静态方法和默认方法(可以理解为普通类中的成员方法)。
静态方法 和 常量 可以用 接口名.xxxx 调用 // 接口也可以发生多态
1.9 开始, 支持 private 方法。
1.2 怎么用?
接口 和 接口 之间 是多继承 以逗号隔开。 interface A extends C,B
{
}
public interface Test
{
public static final String A = "xxx";
String B = "xxx";
public abstract void m1();
void m2(); //可以省略
// 静态方法
public static void m3(){
System.out.println("静态方法");
}
}
class sub implement Test
{
}
-----------------------------------------------------------------------------------------------------------------