抽象类
什么是抽象类
含有抽象方法的类
什么是抽象方法
没有方法实现体的方法就是抽象方法
抽象方法关键字:abstract
抽象方法的关键字是abstract 抽象方法没有方法体
public abstract 返回值数据类型 抽象方法名(参数列表);
注意抽象方法没有方法体
抽象类
public abstract class 类名{}
抽象类的使用
1.一个类继承抽象类,那么就会重写抽象类中所有的抽象方法.
2.抽象方法只存在于抽象类或者接口之中
如何使用抽象方法
1.不能直接实例化抽象类,不能直接实例化接口
2.用子类继承抽象类或者实现接口,就能重写里面的抽象方法
3.在测试类里面,创建子类对象,再调用和子类里面重写的抽象方法就能使用抽象方法了
4.子类必须重写抽象类中所有的抽象方法
抽象类注意事项
1.抽象类不能直接实例化.
2.子类继承抽象类,必须冲洗全部的抽象方法
3.抽象类不一定包含抽象方法,但是含有抽象方法的类一定是抽象类
接口
接口:多个类的公共规范,以抽象方法为主
接口的声明格式:
public interface 接口名(){
//抽象方法
}
接口里面可以放哪些东西
1.常量
2.抽象方法(主要)
3.默认方法(default修饰)(JDK1.8)
4.静态方法(static修饰)(JDK1.8)
5.私有方法(private修饰)(JDK1.9) 主要是供给默认方法和私有方法使用
接口使用步骤
1.接口不能直接使用,只能用一个类来实现接口( implements )
public class 类名 implements 接口名(){}
2.接口的实现类必须重写接口的多有方法,接口没有构造方法,抽象类有构造方法
3.通过实现类对象调用接口的抽象方法
接口使用注意事项
实现类实现接口必须重写接口中所有的抽象方法
默认方法
public default void 方法名(){}//供给子类调用或者只能选择其中之一
1.实现类重写抽象方法
2.重写默认方法不可以省略default
3.如果没有冲洗而默认方法就是继承了
4.实现类实现多个接口,那么遇到默认方法重名就必须重写
静态方法
public static void 方法名(){}
1.静态方法是属于类的,可以通过接口名调用 接口名.静态方法名()
私有方法(JDK1.9)
private void 方法名(){}
1.私有方法只有默认方法才能使用它
2.私有静态方法 默认方法和静态方法都可以使用它
3.如果一个接口有很多默认方法,可以抽取出来
方法重写
1.重写的标记 @Override
继承和实现之间的优先级问题
如果父类中的成员方法和接口种的抽象方法重名,那么就优先执行父类中成员方法的继承
接口的多继承
public class 类名 implements 接口1, 接口2(){}
接口的优点
1.制定规则和格式
2.高内聚,低耦合,方便维护强制要求每个方法单独实现
3.扩展原有功能
接口和抽象类的相同点
1.都含有抽象方法,可以被子类重写
2.不能被直接实例化
3.只能被实现和继承,位于继承的顶端
接口和抽象类的不同点
1.抽象类含有普通成员方法,接口不含有
2.一个类只能继承一个抽象类,但是能够实现很多接口
3.类与类之间单继承,接口与接口之间实现
4.抽象类有构造方法,接口没有构造方法