9, interfaces

345 views

Published on

About java interface

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
345
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

9, interfaces

  1. 1. Interfaces &Abstract Classes
  2. 2. Agenda• 概述• 接口• 接口实现• 接口 - 多重继承• 接口 - 命名冲突• 接口 - 属性• 接口与工厂方法• 抽象类和方法
  3. 3. 概述• 接口(interface) 和 抽象类(abstract class)提供 了一种比实现类更为有效的方式, 用于实现 接口与实现的分离;• 接口 相比 抽象类, 是一种更高层次的抽象, 它声明了一种规范, 所有基于该接口的实现 类都必须实现该规范;• 本章将从接口介绍, 然后介绍抽象类.
  4. 4. 接口• 使用interface关键字声明一个接口, 在接口中可 以定义static final属性和声明方法, 接口中没有 任何方法的实现; 示例:public interface InterfaceA { public static final int VALUE_ONE = 1; public void doSomething();}• 不管是否作了声明, 接口中的属性默认是static final, 方法默认是public;• 接口本身的访问权限可以是public的, 也可以是 包访问权限;• 示例: demo/Demo1.java
  5. 5. 接口实现• 使用implements关键字来实现一个接口, 如下: interface A void f1(); void f2(); implements implements class ClassA class ClassB void f1()... void f1()... void f2()... void f2()...• 接口中所有的方法默认都是public的, 即使不声 明为public; 子类在实现接口中声明的方法时, 必须将方法声明为public, 否则无法编译通过;• 示例: demo/Demo2.java
  6. 6. 接口 – 多重继承• 与C++不同的是, Java语言不支持同时继承多 个类; 但是java提供了接口, 一个类可以同时 实现多个接口;• 示例: demo/Demo3.java
  7. 7. 接口继承• 在创建新的接口时, 可以继承自一个或者多 个接口, 新的接口将继承这些接口中所有的 方法声明; 比如:interface A {...}interface B extends A {...}interface C extends A, B {...}• 示例: demo/Demo4.java
  8. 8. 接口 – 命名冲突• 在同时实现多个接口时, 需要注意方法名称 冲突的问题; 比如:interface I1 { void f(); }interface I2 { int f(); }class C implements I1, I2 {...} // compile error• 在上面的例子中I1 和 I2接口均声明了方法f, 两者只是返回值不同;• 示例: demo/Demo5.java
  9. 9. 接口 – 属性• 可以在接口中声明属性, 接口中所有的属性无 论声明与否都是public static final的; 示例:// 在JDK5引入enum类型之前, 通常使用只包含属性声明的接口来达到类似效果public interface Months {int JANUARY = 1, FEBRUARY = 2, MARCH = 3, APRIL = 4, MAY = 5 ......• 接口属性必须在声明时进行赋值, 赋值可以使 非常量表达式, 示例:public interface RandVals { Random RAND = new Random(47); int RANDOM_INT = RAND.nextInt(10); long RANDOM_LONG = RAND.nextLong() * 10; ...• 示例: demo/Demo6.java
  10. 10. 接口与工厂方法• 工厂方法(Factory Method)设计模式提供了除构 造器之外的另一种方式用于创建对象, 示例:class SomeObject {...}class SomeObjectFactory { SomeObject createObject() {...}}其中createObject方法被称为工厂方法, 工厂方法本身会调用constructor创建对象;• 接口与工厂方法: 工厂方法可以声明为返回某 个接口, 并根据不同的情况返回具体的实现类. 这样客户代码就可以与具体的实现完全解耦合.• 示例: demo/Demo7.java
  11. 11. 抽象类 和 方法• 抽象类是一种介于接口和实现类之间的抽象层 次, 抽象类可以包含抽象方法 和 具体方法;• 使用abstract class声明一个抽象类, 在方法声明 前加abstract用于声明一个抽象方法. 示例:public abstract AbstractClass { void concreteMethod() {...} abstract void abstractMethod();}• 示例: demo/Demo8.java

×