抽象类
抽象类的书写格式 public abstract class……
抽象类中的抽象方法 public abstract void test();
抽象方法必须存在于抽象类中,抽象类中可以有非抽象方法
抽象类中的抽象方法,不能使用private修饰,可以使用protected修饰,但是尽量使用public
抽象类不能直接实例化,也就是不能直接new对象,通过new子类对象的方式来创建对象。
抽象类中的抽象方法必须在子类中实现,除非子类是抽象类。
抽象类中的非抽象方法,可以根据需求是否重写,不强制。
接口
接口的修饰符 interface 书写格式 public interface 接口名称
jdk1.7
接口中只能有抽象方法 不管是否书写 都是 public abstract修饰
接口中只能定义静态常量 public static final 修饰的
接口不能直接被实例化 也就是不能直接new对象 还是用过new实现类的方式来创建对象
接口的实现类必须实现接口中的抽象方法 也就是所有方法
多态的表现形式 还是父类作为形参 或者 父类作为返回值
jdk1.8
接口中可以编写普通方法 必须加上 default关键字 来修饰方法 加在返回值以前
不管是否书写 都是 必须是 public修饰的
接口中可以编写静态方法 跟普通类中的静态方式 使用注意事项一样
适用场景:当你关注事物的本质的时候,使用抽象类,当你关注功能的时候,使用接口。(你品,你仔细品,我们说的事物的本质,比如一个动物,本质上就是一个动物,虽然模糊,但它肯定是一个动物,拥有动物拥有的本质,比如它能吃喝拉撒等,我们再来说功能,比如usb接口,比如插座等,这些无法归为一类具体的事物,我们称之为功能,也就是使用接口来描述。)