您的位置:首页 > 其它

接口 匿名对象 内部类

2017-11-09 09:34 225 查看

接口

概念

比抽象类更抽象的类

只描述所应具备的方法,并没有实现

将功能定义与实现实现分离,优化了程序设计

接口是功能的集合

接口的方法都是public abstract方法

接口的成员变量都是public final static变量

类 实现 接口,使用implements关键字

子类必须重写父类接口所有的方法,否则只能抽象类

接口不能实例化

接口:多继承 ,即接口可以继承多个接口

接口子类:多实现,即子类可以实现多个接口

多个类可以实现同一个接口,一个类可以实现爱你多个接口

接口思想

接口的出现扩展了功能

接口其实是暴露出来的规则

接口的出现降低了耦合性,即设备与设备之间出现了解耦

接口与抽象类

相同点:

都位于继承的顶端,用于被其他类实现或者继承

不能实例化

包含抽象方法,子类必须重写这些方法

区别:

抽象类可以包含非抽象方法,而接口只能有抽象方法

一个类只能继承一个直接父类,但是可以实现多个接口

匿名对象

概念

在创建对象时,只有创建对象的语句,却没有把对象地址赋值给某个变量

特点

没有变量名

只能使用一次

可以作为方法接收的参数 方法返回值使用

内部类

概念

将类写在其他类的内部,可以写在其他类的成员位置和局部位置

内部类可以自由访问外部类的成员变量

如果内部类是静态的,就不能访问外部类的静态变量

成员内部类

外部类名。内部类名 变量名 = new 外部类名()。内部类名();

成员内部类中不能存在任何static的变量和方法

成员内部类是依附于外部类的,只有先创建了外部类才能创建内部类

成员内部类可以无条件访问外部类的所有成员变量和成员方法

外部类要访问内部类的属性和方法,必须先创建内部类对象

内部类破坏了良好的代码结构,唯一的好处是不用创建外部类对象,内部类对象就可以任意访问外部类的成员变量

内部类中没有同名成员变量时,内部类会直接访问外部类的成员变量;有同名成员变量时,直接访问的是内部类的变量,若要使用外部类的变量,需要加this.属性名

局部内部类

外部类方法中:new 内部类。方法();

在外部类中调用此方法,会创建内部类对象

如果此时我们需要往外部类的方法中传入参数,需要用final修饰,没有特殊含义,只是一种形式

内部类中只能访问外部类方法中定义的final类型的局部变量,可以任意访问外部类的成员变量

主要解决编译问题

因为外部类中的局部变量是随方法存放在内存栈中的,方法结束这些局部变量就消失

而局部内部类跟其他类一样,是在内存堆中的,不会随方法结束而立马消失

出现一种问题:局部变量销毁了,而使用这些局部变量的局部内部类却依然在

所以才要求局部内部类使用的局部变量为final修饰的,这样会在内部类中拷贝一份该值,不会出现编译问题

静态内部类

使用static修饰成员内部类

只能访问外部类的静态属性和静态方法

使用外部资源,需要实例化外部类对象

创建时可以直接new出来对象

私有内部类

可以用private修饰内部类,这样只能在外部类内部创建内部类

内部类的实际使用–匿名内部类

使用内部类的原因:

适当java的多继承更加完整

方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏

方便编写事件驱动程序

方便编写线程代码

在类的内部, 将内部类的定义与创建放到一起完成,这种没有名字的类称为匿名内部类

匿名内部类可以继承或实现一个接口,也只能是一个

不能定义构造器,也不能new创建实例,也只是用一次.定义 构造,第一次使用一次完成.

-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐