SlideShare a Scribd company logo
1 of 11
Interfaces &
Abstract Classes
Agenda
•   概述
•   接口
•   接口实现
•   接口 - 多重继承
•   接口 - 命名冲突
•   接口 - 属性
•   接口与工厂方法
•   抽象类和方法
概述
• 接口(interface) 和 抽象类(abstract class)提供
  了一种比实现类更为有效的方式, 用于实现
  接口与实现的分离;
• 接口 相比 抽象类, 是一种更高层次的抽象,
  它声明了一种规范, 所有基于该接口的实现
  类都必须实现该规范;
• 本章将从接口介绍, 然后介绍抽象类.
接口
• 使用interface关键字声明一个接口, 在接口中可
  以定义static final属性和声明方法, 接口中没有
  任何方法的实现; 示例:
public interface InterfaceA {
  public static final int VALUE_ONE = 1;
  public void doSomething();
}
• 不管是否作了声明, 接口中的属性默认是static
  final, 方法默认是public;
• 接口本身的访问权限可以是public的, 也可以是
  包访问权限;
• 示例: demo/Demo1.java
接口实现
• 使用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
接口 – 多重继承
• 与C++不同的是, Java语言不支持同时继承多
  个类; 但是java提供了接口, 一个类可以同时
  实现多个接口;
• 示例: demo/Demo3.java
接口继承
• 在创建新的接口时, 可以继承自一个或者多
  个接口, 新的接口将继承这些接口中所有的
  方法声明; 比如:
interface A {...}
interface B extends A {...}
interface C extends A, B {...}
• 示例: demo/Demo4.java
接口 – 命名冲突
• 在同时实现多个接口时, 需要注意方法名称
  冲突的问题; 比如:
interface I1 { void f(); }
interface I2 { int f(); }
class C implements I1, I2 {...} // compile error
• 在上面的例子中I1 和 I2接口均声明了方法f,
  两者只是返回值不同;
• 示例: demo/Demo5.java
接口 – 属性
• 可以在接口中声明属性, 接口中所有的属性无
   论声明与否都是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
接口与工厂方法
• 工厂方法(Factory Method)设计模式提供了除构
  造器之外的另一种方式用于创建对象, 示例:
class SomeObject {...}
class SomeObjectFactory {
    SomeObject createObject() {...}
}
其中createObject方法被称为工厂方法, 工厂方
法本身会调用constructor创建对象;
• 接口与工厂方法: 工厂方法可以声明为返回某
  个接口, 并根据不同的情况返回具体的实现类.
  这样客户代码就可以与具体的实现完全解耦合.
• 示例: demo/Demo7.java
抽象类 和 方法
• 抽象类是一种介于接口和实现类之间的抽象层
  次, 抽象类可以包含抽象方法 和 具体方法;
• 使用abstract class声明一个抽象类, 在方法声明
  前加abstract用于声明一个抽象方法. 示例:
public abstract AbstractClass {
  void concreteMethod() {...}
  abstract void abstractMethod();
}
• 示例: demo/Demo8.java

More Related Content

Viewers also liked

Lynette Community Of Learners
Lynette    Community Of LearnersLynette    Community Of Learners
Lynette Community Of LearnersKevin Hodgson
 
гиа 9 - для школьного сайта
гиа 9  -  для школьного сайтагиа 9  -  для школьного сайта
гиа 9 - для школьного сайтаАня Иванова
 
гиа 9 - график проведения
гиа 9  -  график проведениягиа 9  -  график проведения
гиа 9 - график проведенияАня Иванова
 
Sobre el concepto 'Posverdad'
Sobre el concepto 'Posverdad' Sobre el concepto 'Posverdad'
Sobre el concepto 'Posverdad' Antoni
 
Using Social Media in Business - iWIN Forum - Scot McKee
Using Social Media in Business - iWIN Forum - Scot McKee Using Social Media in Business - iWIN Forum - Scot McKee
Using Social Media in Business - iWIN Forum - Scot McKee BirddogB2B
 
Effective communication skill IN NURSING
Effective communication skill IN NURSINGEffective communication skill IN NURSING
Effective communication skill IN NURSINGAmbily Ulahannan
 

Viewers also liked (9)

Lynette Community Of Learners
Lynette    Community Of LearnersLynette    Community Of Learners
Lynette Community Of Learners
 
визитница 0
визитница 0визитница 0
визитница 0
 
гиа 9 - для школьного сайта
гиа 9  -  для школьного сайтагиа 9  -  для школьного сайта
гиа 9 - для школьного сайта
 
гиа 9 - график проведения
гиа 9  -  график проведениягиа 9  -  график проведения
гиа 9 - график проведения
 
Sobre el concepto 'Posverdad'
Sobre el concepto 'Posverdad' Sobre el concepto 'Posverdad'
Sobre el concepto 'Posverdad'
 
Using Social Media in Business - iWIN Forum - Scot McKee
Using Social Media in Business - iWIN Forum - Scot McKee Using Social Media in Business - iWIN Forum - Scot McKee
Using Social Media in Business - iWIN Forum - Scot McKee
 
Effective communication skill IN NURSING
Effective communication skill IN NURSINGEffective communication skill IN NURSING
Effective communication skill IN NURSING
 
Nursing Communication
Nursing CommunicationNursing Communication
Nursing Communication
 
Prf box
Prf box Prf box
Prf box
 

Similar to 9, interfaces

3. java basics
3. java basics3. java basics
3. java basicsnetdbncku
 
2, object oriented programming
2, object oriented programming2, object oriented programming
2, object oriented programmingted-xu
 
使用Lua提高开发效率
使用Lua提高开发效率使用Lua提高开发效率
使用Lua提高开发效率gowell
 
Java基础方面
Java基础方面Java基础方面
Java基础方面yiditushe
 
Java面试32题
Java面试32题Java面试32题
Java面试32题yiditushe
 
Clojure简介与应用
Clojure简介与应用Clojure简介与应用
Clojure简介与应用Robert Hao
 
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註Justin Lin
 
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發Weizhong Yang
 
Java面试知识
Java面试知识Java面试知识
Java面试知识yiditushe
 
2. java introduction
2. java introduction2. java introduction
2. java introductionnetdbncku
 
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用hugo
 
第9章 Shell 編程
第9章 Shell 編程第9章 Shell 編程
第9章 Shell 編程kidmany2001
 

Similar to 9, interfaces (20)

3. java basics
3. java basics3. java basics
3. java basics
 
2, object oriented programming
2, object oriented programming2, object oriented programming
2, object oriented programming
 
使用Lua提高开发效率
使用Lua提高开发效率使用Lua提高开发效率
使用Lua提高开发效率
 
Java基础方面
Java基础方面Java基础方面
Java基础方面
 
Java面试32题
Java面试32题Java面试32题
Java面试32题
 
Clojure简介与应用
Clojure简介与应用Clojure简介与应用
Clojure简介与应用
 
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
 
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發
 
Java面试知识
Java面试知识Java面试知识
Java面试知识
 
111
111111
111
 
111
111111
111
 
111
111111
111
 
111
111111
111
 
111
111111
111
 
2. java introduction
2. java introduction2. java introduction
2. java introduction
 
beidakejian
beidakejianbeidakejian
beidakejian
 
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用
 
C+
C+C+
C+
 
C#
C#C#
C#
 
第9章 Shell 編程
第9章 Shell 編程第9章 Shell 編程
第9章 Shell 編程
 

More from ted-xu

11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert systemted-xu
 
10, OCP - flashback
10, OCP - flashback10, OCP - flashback
10, OCP - flashbackted-xu
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rmanted-xu
 
8, OCP - backup with rman
8, OCP - backup with rman8, OCP - backup with rman
8, OCP - backup with rmanted-xu
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recoveryted-xu
 
6, OCP - oracle security
6, OCP - oracle security6, OCP - oracle security
6, OCP - oracle securityted-xu
 
5, OCP - oracle storage
5, OCP - oracle storage5, OCP - oracle storage
5, OCP - oracle storageted-xu
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networkingted-xu
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance managementted-xu
 
2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a databaseted-xu
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture introted-xu
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuningted-xu
 
7, business event system
7, business event system7, business event system
7, business event systemted-xu
 
6, workflow miscellaneous
6, workflow miscellaneous6, workflow miscellaneous
6, workflow miscellaneousted-xu
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activityted-xu
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & apited-xu
 
3, workflow in ebs
3, workflow in ebs3, workflow in ebs
3, workflow in ebsted-xu
 
2, a simple workflow
2, a simple workflow2, a simple workflow
2, a simple workflowted-xu
 
1, workflow intro
1, workflow intro1, workflow intro
1, workflow introted-xu
 
8, bes tables & api
8, bes tables & api8, bes tables & api
8, bes tables & apited-xu
 

More from ted-xu (20)

11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert system
 
10, OCP - flashback
10, OCP - flashback10, OCP - flashback
10, OCP - flashback
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman
 
8, OCP - backup with rman
8, OCP - backup with rman8, OCP - backup with rman
8, OCP - backup with rman
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery
 
6, OCP - oracle security
6, OCP - oracle security6, OCP - oracle security
6, OCP - oracle security
 
5, OCP - oracle storage
5, OCP - oracle storage5, OCP - oracle storage
5, OCP - oracle storage
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networking
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance management
 
2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a database
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture intro
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuning
 
7, business event system
7, business event system7, business event system
7, business event system
 
6, workflow miscellaneous
6, workflow miscellaneous6, workflow miscellaneous
6, workflow miscellaneous
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activity
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & api
 
3, workflow in ebs
3, workflow in ebs3, workflow in ebs
3, workflow in ebs
 
2, a simple workflow
2, a simple workflow2, a simple workflow
2, a simple workflow
 
1, workflow intro
1, workflow intro1, workflow intro
1, workflow intro
 
8, bes tables & api
8, bes tables & api8, bes tables & api
8, bes tables & api
 

9, interfaces

  • 2. Agenda • 概述 • 接口 • 接口实现 • 接口 - 多重继承 • 接口 - 命名冲突 • 接口 - 属性 • 接口与工厂方法 • 抽象类和方法
  • 3. 概述 • 接口(interface) 和 抽象类(abstract class)提供 了一种比实现类更为有效的方式, 用于实现 接口与实现的分离; • 接口 相比 抽象类, 是一种更高层次的抽象, 它声明了一种规范, 所有基于该接口的实现 类都必须实现该规范; • 本章将从接口介绍, 然后介绍抽象类.
  • 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. 接口实现 • 使用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. 接口 – 多重继承 • 与C++不同的是, Java语言不支持同时继承多 个类; 但是java提供了接口, 一个类可以同时 实现多个接口; • 示例: demo/Demo3.java
  • 7. 接口继承 • 在创建新的接口时, 可以继承自一个或者多 个接口, 新的接口将继承这些接口中所有的 方法声明; 比如: interface A {...} interface B extends A {...} interface C extends A, B {...} • 示例: demo/Demo4.java
  • 8. 接口 – 命名冲突 • 在同时实现多个接口时, 需要注意方法名称 冲突的问题; 比如: interface I1 { void f(); } interface I2 { int f(); } class C implements I1, I2 {...} // compile error • 在上面的例子中I1 和 I2接口均声明了方法f, 两者只是返回值不同; • 示例: demo/Demo5.java
  • 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. 接口与工厂方法 • 工厂方法(Factory Method)设计模式提供了除构 造器之外的另一种方式用于创建对象, 示例: class SomeObject {...} class SomeObjectFactory { SomeObject createObject() {...} } 其中createObject方法被称为工厂方法, 工厂方 法本身会调用constructor创建对象; • 接口与工厂方法: 工厂方法可以声明为返回某 个接口, 并根据不同的情况返回具体的实现类. 这样客户代码就可以与具体的实现完全解耦合. • 示例: demo/Demo7.java
  • 11. 抽象类 和 方法 • 抽象类是一种介于接口和实现类之间的抽象层 次, 抽象类可以包含抽象方法 和 具体方法; • 使用abstract class声明一个抽象类, 在方法声明 前加abstract用于声明一个抽象方法. 示例: public abstract AbstractClass { void concreteMethod() {...} abstract void abstractMethod(); } • 示例: demo/Demo8.java