抽象类:
abstract关键字:抽象 虚
这个类定义成抽象,这个类不能实例化。
抽象类一定依赖子类完成实例化
抽象类一定要去动态绑定。
一个子类去继承一个抽象父类的时候,必须实现这个类的抽象方法:


 
调用哪个重写的方法,是由new的对象决定的:


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
写个验证码:

 
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
抽象类是用abstract关键字修饰的,不能实例化,不能去new创建对象。
抽象类可以有构造函数,提供给子类的构造函数完成依赖
抽象类可以有抽象方法,也可以没有抽象方法。
一般来说:抽象类提供设计抽象方法,给子类继承实现,就是为了方法重写。
如果一个类有抽象方法,这个类肯定是抽象类。
abstract和static不能同时修饰一个方法
static修饰的不能方法重写,抽象方法要方法重写
抽象方法在父类中不能实现,所以没有方法体

 
接口:
接口是完全的抽象类, 它不能实例化, 不能有构造函数,不能有实例方法。
接口作用:: Java为了加强动态绑定,为了加强方法重写(为了加强多态)
抽象类和接口一定是父类,一定是被子类继承和实现。
接口中所谓的变量,不是变量,是常量。
接口中的方法都是要被重写的,所以方法不能修饰成private
抽象类和接口作用是一样的
  *    
  *    何时定义成抽象类?何时定义成接口?  优秀考虑级别
  *    
  *      1. 抽象类设计的参考是:子类是同一类型    学生  老师     学生类型和老师类型是不是同一类。 子类  is  父类  建议考虑是抽象父类 是true。
  *      
  *      
  *      2. 接口设计的参考是: 接口父类  has 包含 子类  功能    人  run()  汽车  run()   球  run()
  *      
  *    
  *    抽象类和接口区别,统一描述
  *  
  *        共同点:
  *          1.  都不能实例化,都不能new。
  *          2.  作用:为了加强动态绑定,为了加强方法重写,就是为了加强多态。
  *          3.  接口和抽象类都是父类,都是被继承和实现的。
  *          
  *         不同点:
  *          1.  接口中定义都是常量final,抽象类不是。
  *          2.  抽象类可以有构造函数,接口不可以有构造函数
  *          3.  接口中一定有抽象方法,抽象类可以有抽象方法,也可以没有。
  *          4.  子类继承抽象类extends关键字,子类实现接口implements关键字
  *          5.  继承只能单继承,接口可以多实现(多继承),多个父类。


 (调用哪个重写的方法,是由new的对象决定的)
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
只能直接继承一个父类(extends),可以实现多个父类(implements)
Java的多继承是通过接口来实现的。

 
定时爬虫,TimerTask是抽象类, 实现其他功能必须要用implements(接口)



lambda表达式:
实现lambda表达式 需要1.8的环境。


类  名 = ( )->{ };

 










