接口和内部类

接口的定义:接口不是类,是对类的一组需求描述。

如何实现接口:1.将类声明为实现给定的接口(implements)

       2.对接口中的所有方法进行定义(实现)

接口的特性:1)接口变量必须引用实现了接口的类对象

      2)可以使用 instanceof 检查一个对象是否实现了某个接口

      3)与可以建立类的继承关系一样,接口也可以被扩展

        例如:public interface Powerd  extends Moveable

      4)接口中不能包含 实例域 和 静态方法,但可以包含常量。

      5)接口中的方法 自动被设置为 public,接口中的域 将自动被设置为 public static final

接口和抽象类的异同:抽象类只能扩展于一个类,即一个类只能继承于一个类;然而,一个类可以实现多个接口。

-----------------------------------------------------------------------------------------------------------------------------------------

内部类:定义在另一个类中的类。

使用内部类的原因:

  1)内部类 方法 可以访问 该类 定义所在作用域中的数据,包括私有的数据。

  2)内部类可以对同一个包中的其他类隐藏起来,换句话说,同一个包中的其他类 是 看不到 内部类的。

  3)当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。

创建内部类,并不代表:包含 内部类的外围类的对象,都有一个内部类的对象实例域。而是 内部类的对象 包含一个 指向了创建它的外部类对象的隐式引用

通过查询编译后的代码,java 编译器会将 内部类编译成 一个类文件,名称组成: 外围类$内部类.class。在类文件中,会多一个 final 的实例域 this$0。而在外部类的类文件中会多一个 access$0 静态方法。

1)当某个对象只在某个方法中创建一次,那么就可以定义局部内部类

  1)创建局部内部类,不能使用 public 或 private 访问修饰符 进行声明

  2)作用域 只现定于 声明此类所在的块中

  3)相比于其他内部类:局部内部类 可以访问 局部变量(必须被声明为 final

2)当只创建某个类的对象时,那么就可以考虑创建 匿名内部类

  超类的写法: new SuperType(construction param){//匿名内部类的参数,只能通过父类传递进去

          innser class methods and data

        }  

  接口的写法:new Interface (){//匿名内部类的实现接口,不能带有参数,因为接口没有构造函数。

          innser class methods and data

        }

3)当需要把一个类隐藏在另外一个类的内部时,并不需要内部类引用外部类对象,这个时候就可以通过静态内部类来实现。

  

时间: 2024-10-05 18:06:13

接口和内部类的相关文章

第11章 接口与内部类

1.接口的定义和实现2.内部类的使用3.接口和内部类的意义 Java程序设计中的接口,也是一种规范.这个接口定义了类应该做什么?但不关心如何做?即接口中只有方法名,没有具体实现的方法体. 用关键字"interface"来声明. interface school{ void setSchoolName(String schoolName); void setClassName(String schoolClassName);} 类实现接口时要使用implements关键字.class s

[Java学习笔记] Java核心技术 卷1 第六章 接口与内部类

第6章 接口与内部类 6.1 接口 一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象. 在接口声明中,方法自动public,可以不写修饰符.在实现接口时必须把方法声明为public. 一个接口中可以包含多个方法,还可以定义常量,自动设置public static final 声明在接口中的内部类自动成为static和public类. 接口中不能含有实例域,也不能在接口中实现方法.提供实例域和方法实现的任务应该由实现接口的那个类来完成. 可以将接口看成是没有实例域的抽

Java面向对象程序设计--接口和内部类

1.接口的定义: In the Java programming language, an interface is not a class but a set of requirements for classes that want to conform the interface. 说明: 1) Interface 不是class,虽然interface具有class的一些特点,例如能够继承,能够定义相同类型的变量,而且和C++的abstract class非常像,但Java 的inter

51CTO大数据学习003-抽象类、接口、内部类

今天学习完了大数据第七天的课程.总结一下抽象类.接口.内部类的内容. 接口的使用,可以降低代码的耦合性,抽象类,体现了Java编程的面向对象特性.Java中只支持单继承,即每个类只能继承一个上级父类,但是可以传递.接口可以实现多个,这也从另外一个角度实现了类的多继承. 实现接口使用关键字implements,抽象类使用abstract关键字.接口中的方法,全是抽象方法,而抽象类中可以有抽象方法,也可以没有抽象方法.抽象类不能实例化.子类继承抽象类,需要实现父类中的抽象方法.接口中的方法,全部都用

Java核心技术 第六章 接口和内部类

Java核心技术  第六章  接口与内部类 接口: 任何实现Comparable接口的类都需要包含compareTo方法,并且这个方法的参数必须是一个Object对象,返回一个整数数值. 在Java SE 5.0中,Comparable接口已经改进为泛型类型. 接口中所有的方法自动的属于public.因此,在接口中声明方法时,不必提供关键字public. 接口中决不能含有实例域,也不能在接口中实现方法. 要让一个类使用排序服务,必须让它实现compareTo方法,因此必须实现Comparable

9.接口与内部类

一.抽象类 不可以被实例化为对象 必须被继承 不能用final修饰 属于后期(动态)绑定 在设计阶段要确定好是否定义抽象类 例子:哺乳动物类 abstruct class buru(){} 2.抽象方法 是不完整的方法,只有声明,但没有方法主体 仅代表一种类型或功能,而不是具体的实现细节 子类必须重写父类的抽象方法 如果不想重写,那子类也必须是抽象类 二.接口 例子:虽然球类和轮胎类没有直接联系,但是可以赋予他们一种通用的行为:弹跳 可以解决单继承的缺陷 接口中的方法也没有方法体body,方法时

【Java总结】final关键字,抽象类,接口,内部类

final final修饰类,表示这个 类不能被继承 final修饰方法,表示这个方法不能被重写 final修饰常量(常量大写),表示常量不能被修改内容 static final修饰的常量,表示全局常量 抽象类 使用abstract修饰的类,这个类是抽象类 使用abstract修饰的方法,为抽象方法,此方法只有生命没有实现 含有抽象方法的类必须是抽象类 抽象类不能实例化,抽象类的子类必须重写父类的抽象方法 不能使用abstract修饰属性,私有方法,构造器,静态方法,final方法 /*我为抽象

Java基础语法<九> 接口与内部类

1 接口  interface implement 接口的所有方法自动地属于public.因此,在接口中声明方法时,不必提供关键字public. 接口可以包含多个方法,接口中可以定义常量.接口中的域将被自动设为public static final. SwingConstants就是只定义了常量,而没有定义方法,任何实现了SwingConstant接口的类都自动地继承了这些常量,并可以在方法中直接地引用一些常量. 1.1 接口的特性 接口不是类,尤其不能使用new运算符实例化一个接口 但是可以声

黑马程序员——JAVA学习笔记四(继承、接口、内部类)

1,    通过extends关键字让类与类之间产生继承关系.多个类中存在相同属性和行为时,将这些内容抽取到单独的一个类中,那么多个类无需定义这些属性和行为,只要继承那个类即可,已存在的类叫做超类,基类,或父类.新类称为子类,派生类,孩子类. 子类可以直接访问父类中的非私有的属性和行为.子类无法继承父类中私有的内容.JAVA不支持多继承,只支持单继承,多实现. 继承提高了代码复用性,让类与类之间产生了关系.为多态提供了前提. 2,    super关键字代表父类中成员变量内存空间的标示.两个作用