文档详情

抽象类接口与内部类.ppt

发布:2017-10-23约字共39页下载文档
文本预览下载声明
第5章 抽象类、接口与内部类 5.1 抽象类 5.2接口 5.3内部类 5.4 包 5.1 抽象类(1) 在继承的层次关系中,从子类到父类,类就变的更一般、更通用。类的设计应该保证父类包含子类的共同特征,也就是父类应该是子类的良好的抽象。 有时我们将一个父类设计的非常非常的抽象,以至于它都没有具体的实例,这样的类我们称之为抽象类(abstract class). 当需要一个类作为一个更通用的接口来控制一系列的相关类的时候,我就要创建一个抽象类来实现这个功能 5.1 抽象类(2) 5.2接口 5.2.1接口的定义与实现 5.2.2用接口实现Java中的多重继承 5.2.3 接口的扩展 5.2.4 接口的嵌套 5.2.1接口的定义与实现 5.2.1接口的定义与实现 接口实现用关键字implements,实现的具体形式: class ClassName implements interfaceName 接口(interface)作为特殊形式的抽象类,和类(class)在使用上具有类似的约束。 与类继承不同,一个接口可以继承多个父接口 一个public接口只能定义在同名的.java文件中 5.2.2 用接口实现Java中的多重继承 类允许实现多个接口。 一个类可以看起来像多个接口。 类通过实现多个接口间接的实现java中的多重继承。 类可以转型为多个接口的类型进行访问。 5.2.3 接口的扩展 通过继承可以对一个或多个接口进行组合并扩展,并可以在扩展的接口中添加新的方法,使接口更加丰富。 5.2.3 接口的扩展(例) interface I1{ void f1(); } interface I2{ void f2(); } interface Ie1 extends I2{ void fe1(); } interface Ie2 extends Ie1, I1{ // 只有在接口的情况下才能继承多个接口。 void fe2(); } 5.2.4 接口的嵌套 类嵌套接口 接口嵌套接口 5.2.4 接口的嵌套(类嵌套接口) class A { interface B { void method(); } private interface B { void method(); } } 5.2.4 接口的嵌套(接口嵌套接口) interface A { interface B { void f(); } public interface C{ void f(); } } 5.3内部类 5.3.1内部类的基本语法 5.3.2局部内部类 5.3.3静态内部类 5.3.4匿名内部类 5.3.5内部类的继承 5.3内部类 嵌套在类里面的类就被称为内部类。内部类允许一个类定义被放到另一个类定义里。内部类是一个有用的特征,因为它们允许将逻辑上同属性的类组合到一起,并在另一个类中控制一个类的可视性。 5.3.1内部类的基本语法 class OuterClass{ ? class InnerClass{} } 上面代码就是典型的内部类的代码,正如我前面说的把类InnerClass放在类OuterClass的内部 5.3.2局部内部类 局部内部类基本的内部类形式上没什么区别,唯一不同的就是作用域不同。比如上面内部类的作用域范围是整个外层类。 如果将这个类放在某个方法内,此时他的作用域范围只是该方法内部,那么这个方法以外是不能创建该内部类对象的。如果在某个块中,那么他的作用域范围就只在这个块以内。 5.3.2局部内部类(2) public?Interface?InnerMethod2(){ //创建一个局部内部类,继承自Interface接口 class?InnerLocal?implements?Interface{ public void getInfo(){ ???? System.out.println(localClass); ??? } ? } ?? /*在方法类创建该类的对象,并调用其方法。这个是被允许的*/ Interface?local?=?new?InnerLocal(); local.getInfo(); return?local; } 5.3.2局部内部类(3) public?Interface?showLocalClass(final?boolean?flag){ if(flag){ ??? class?InnerLocal?imple
显示全部
相似文档