Java抽象类和接口
1、抽象类
-
关键字:abstract
-
不能new这个抽象类,只能被子类实现。
-
类只能单继承
-
抽象类可以有抽象方法,也可以有普通方法;但是抽象方法被须在抽象类中。
-
抽象类可以有普通成员变量。
-
继承了抽象类的普通子类,必须重写抽象类的所有抽象方法。
public abstract class Demo1{ private int a; { a = 5; } public void run(){ System.out.println("普通run方法"); } public abstract void say(); } public class Demo2 extends Demo1{ @override public void say(){ System.out.println("实现了抽象方法say"); } }
2、接口
-
关键字 interface
-
没有构造方法
-
不能new接口,只能被子类实现。
-
接口能够多实现,关键字implements
-
方法默认public abstract,抽象方法不能有方法实现
-
可以有默认方法:default
- 可直接调用静态方法,实现类继承该方法,并能够重写
- 若一个类实现的两个接口有同样的默认方法,则实现类必须重写该默认方法
- 若一个类继承的父类和实现的接口出现同名方法,类优先
-
可以有静态方法:public static
-
接口变量都是public static final的,必须赋初始值
-
实现了接口的类,必须重写接口的所有抽象方法。
public interface UserService{ public static final int AGE = 99; void add(String name); void delete(String name); void update(String name); void query(String name); public static void f1(){ } default void f2(){ f1(); } }