Java的面向对象( 九 )


9.接口,实际上就可以看做一种 规范
10.开发中,体会 面向接口编程 !

Java的面向对象

文章插图
 
接口定义的一种规范,面向接口编程,使得代码更具有 通用性 或 可移植性
代理模式代理模式是Java开发中使用较多的一种设计模式 。代理设计就是为其他对象提供一种代理以控制对这个对象的访问 。
代理类和被代理类都需要实现这个接口,通过代理类的对象调用实现接口中的抽象方法时,里面包含了被代理对象同名的方法的调用 。
Java的面向对象

文章插图
 

Java的面向对象

文章插图
 
工厂模式1.解决的问题
实现了创建者与调用者的分离,即将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的 。
2.具体模式
简单工厂模式 。用来生产同一等级结构中的任意产品 。(对于增加新的产品,需要修改已有代码)工厂方法模式:用来生产同一等级结构中的固定产品 。(支持增加任意产品)
抽象工厂模式 。用来生产不同产品族的全部产品 。(对于增加新的产品,无能为力﹔支持增加产品族)
3.核心本质:
实例化对象,用工厂方法代替new操作 。
将选择实现类、创建对象统一管理和控制 。从而将调用者跟我们的实现类解耦 。
Java8中关于接口的改进
Java的面向对象

文章插图
 
Java8新特性
知识点1:接口中定义的静态方法,只能通过接口来调用
知识点2:通过实现类的对象,可以调用接口中的默认方法
如果实现类重写了接口中的默认方法,调用时,任然调用的是重写以后的方法
知识点3:如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的方法,那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参数的方法 。------>类优先原则
知识点4:如果实现类实现了多个接口,而这多个接口中定义了同名同参的默认方法,那么在实现类没有重写此方法的情况下,报错 。------>接口冲突
这就需要我们必须在实现类中重写此方法
知识点5:如何在子类(或实现类)的方法中调用父类,接口中被重写的方法
Java的面向对象

文章插图
 
类的内部成员之五:内部类
  1. Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B就是外部类
  2. 内部类的分类:成员内部类(静态,非静态) 和局部内部类(方法内,代码块内,构造器内)
  3. 成员内部类:一方面,作为外部类的成员;调用外部类的结构可以被static修饰可以被4种不同的权限修饰另一方面,作为一个类:类内可以定义属性、方法、构造器等可以被final修饰,表示此类不能被继承 。言外之意,不使用final,就可以被继承可以被abstract修饰关注如下的3个问题4.1 如何实例化成员内部类的对象4.2如何在成员内部类中区分调用外部类的结构4.3 开发中局部内部类的使用
总结
  1. abstract能修饰哪些结构? 修饰以后,有什么特点?,
类、方法 。
类不能实例化,提供子类
抽象方法,只定义了一种功能的标准 。具体的执行,需要子类去实现 。
  1. 接口是否能继承接口?抽象类是否能实现(implements)接口?抽象类是否能继承非抽象的类?,能,能,能
3. 抽象类和接口有哪些共同点和区别?抽象类:类中的有的东西它都可以有,还可以有抽象方法
接口:JDK7及以前只能有:全局变量和抽样方法 JDK8以后可以添加静态静态方法和默认方法,JDK9可以定义私有方法 。
相同点:不能实例化(都可以包含抽样方法的),都可以被继承
不同点:抽象类:有构造器 。接口:不能声明构造器
类:单继承 接口:多继承
类与接口:多实现
Java的面向对象

文章插图
 
抽象类和接口 都不能够实例化 ,但可以定义抽象类和接口类型的 引用  。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类 。 接口比抽象类更加抽象 ,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法 。抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的 。抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量 。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法 。


推荐阅读