1:抽象类
抽象类=普通类+抽象方法
1.1抽象类是类
1.2多了抽象方法,类必须是抽象类
1.3抽象方法没有方法体。
1.4抽象类必须有子类,必须实现所有的抽象方法。
1.5抽象类不能实例化。
1.6是类,仍旧满足多态特性,所以方法的参数使用抽象类父类的引用。
在开发过程中,对于有些方法一定要实现,则会被此方法在父类中声明为抽象的方法,对于有些方法不一定实现,在抽象父类中声明成普通的方法,子类可以选择性的对父类中的普通方法进行重写来完成相应的逻辑。
例如:listener类observer观察者模式
代码 语法
代码映射出人类的注解
开发应用中
面试中
面向抽象编程,不面向具体编程。
抽象类的限制;
1:抽象类不能使用final关键字
2:抽象类虽然不能实例化,但是可以像普通类一样,拥有属性和构造方法,子类可以通过调用抽象类的构造方法来完成子类自己的构造。
接口
接口是抽象的抽象
Interface user interface
抽象类的不足;
1:类 单继承 单一
2:类中既有普通方法,又有抽象方法,杂乱
接口解决以上问题
接口特性:
1:接口不是类,但是存在.Java文件中编译之后也是会生成.class文件。
2:接口中只存在抽象方法,方法通常只写返回值类型,和方法名,可以省略public abstract
3:接口中只存在常量,默认是有public final 修饰,常量名都用大写字母。
4:接口不能实例化。
5:使用定义好的接口,创建具体的类去实现接口(如果使用接口,就要实现接口中所有的抽象方法)
6:定义类某种功能,凡是要实现这一功能的类,都可以实现接口中定义的方法
7:接口感觉上实现类的多继承
8:接口也是属于功能上延伸
9:接口貌似是具体的父类,可以实现类的向上转型(把具体类的对象赋给接口的引用)
10:jdk 1.8 default 在接口修饰普通的方法
为了实现函数式编程 lambda 闭包closure
11:接口可以多继承
12:依照类的多态特性,如果方法的参数为接口的引用,传递的就是实现接口的类。
13:先继承父类后实现接口
普通类 抽象类 接口 关系
1:普通可以继承普通类,也可以继承抽象类,实现接口
2:抽象类可以继承普通类,可以继承抽象类,实现接口
3:接口只能继承接口
接口其实是一个标准,真正的开发过程中,接口文档(来源与需求,目的在于功能的描述)建立类前后端的联系。接口文档是一个doc文档。一般都是后端人员书写。
1:工厂模式factory pattern
2:代理模式proxy pattern
例如:1门中有防盗门,保险柜门,可以报警(alert接口),报警器可以报警,报警器分警车上报警器,烟雾报警器,根据不同对象调用的报警方法。
2:animal类 鸟类 会飞
交通工具类 飞机 会飞
无人机 会飞
3:研究游戏英雄中有没有具有相同的技能。来练习接口。