接口 匿名对象 内部类
2017-11-09 09:34
225 查看
接口
概念比抽象类更抽象的类
只描述所应具备的方法,并没有实现
将功能定义与实现实现分离,优化了程序设计
接口是功能的集合
接口的方法都是public abstract方法
接口的成员变量都是public final static变量
类 实现 接口,使用implements关键字
子类必须重写父类接口所有的方法,否则只能抽象类
接口不能实例化
接口:多继承 ,即接口可以继承多个接口
接口子类:多实现,即子类可以实现多个接口
多个类可以实现同一个接口,一个类可以实现爱你多个接口
接口思想
接口的出现扩展了功能
接口其实是暴露出来的规则
接口的出现降低了耦合性,即设备与设备之间出现了解耦
接口与抽象类
相同点:
都位于继承的顶端,用于被其他类实现或者继承
不能实例化
包含抽象方法,子类必须重写这些方法
区别:
抽象类可以包含非抽象方法,而接口只能有抽象方法
一个类只能继承一个直接父类,但是可以实现多个接口
匿名对象
概念在创建对象时,只有创建对象的语句,却没有把对象地址赋值给某个变量
特点
没有变量名
只能使用一次
可以作为方法接收的参数 方法返回值使用
内部类
概念将类写在其他类的内部,可以写在其他类的成员位置和局部位置
内部类可以自由访问外部类的成员变量
如果内部类是静态的,就不能访问外部类的静态变量
成员内部类
外部类名。内部类名 变量名 = new 外部类名()。内部类名();
成员内部类中不能存在任何static的变量和方法
成员内部类是依附于外部类的,只有先创建了外部类才能创建内部类
成员内部类可以无条件访问外部类的所有成员变量和成员方法
外部类要访问内部类的属性和方法,必须先创建内部类对象
内部类破坏了良好的代码结构,唯一的好处是不用创建外部类对象,内部类对象就可以任意访问外部类的成员变量
内部类中没有同名成员变量时,内部类会直接访问外部类的成员变量;有同名成员变量时,直接访问的是内部类的变量,若要使用外部类的变量,需要加this.属性名
局部内部类
外部类方法中:new 内部类。方法();
在外部类中调用此方法,会创建内部类对象
如果此时我们需要往外部类的方法中传入参数,需要用final修饰,没有特殊含义,只是一种形式
内部类中只能访问外部类方法中定义的final类型的局部变量,可以任意访问外部类的成员变量
主要解决编译问题
因为外部类中的局部变量是随方法存放在内存栈中的,方法结束这些局部变量就消失
而局部内部类跟其他类一样,是在内存堆中的,不会随方法结束而立马消失
出现一种问题:局部变量销毁了,而使用这些局部变量的局部内部类却依然在
所以才要求局部内部类使用的局部变量为final修饰的,这样会在内部类中拷贝一份该值,不会出现编译问题
静态内部类
使用static修饰成员内部类
只能访问外部类的静态属性和静态方法
使用外部资源,需要实例化外部类对象
创建时可以直接new出来对象
私有内部类
可以用private修饰内部类,这样只能在外部类内部创建内部类
内部类的实际使用–匿名内部类
使用内部类的原因:
适当java的多继承更加完整
方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏
方便编写事件驱动程序
方便编写线程代码
在类的内部, 将内部类的定义与创建放到一起完成,这种没有名字的类称为匿名内部类
匿名内部类可以继承或实现一个接口,也只能是一个
不能定义构造器,也不能new创建实例,也只是用一次.定义 构造,第一次使用一次完成.
-
相关文章推荐
- JavaSE8基础 匿名内部类 继承/实现 类/接口的子类匿名对象
- 匿名内部类 Anoymous Inner Class, 可以继承抽象类,实现接口
- Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
- 3月22日,TestFrame采用接口形式产生匿名对象,每日20行。
- 内部类、匿名内部类和对象的初始化过程
- Java对象实例化(匿名内部类)
- static、final、匿名对象、内部类
- 黑马程序员-Java学习04-接口,多态,内部类,匿名内部类,Object类
- 面向对象_匿名内部类的格式和理解
- Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
- Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
- javaSE day13 final static 匿名对象 内部类 包的声明与访问 四种访问修饰符 代码块
- 黑马程序员--Java学习笔记之面向对象思想(多态、内部类、匿名内部类、异常类)
- Java学习系列(五)Java面向对象之抽象类、接口、内部类、枚举类详解
- Java面向对象 匿名内部类实现接口
- 【Java面试题】13 Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
- Objective-C 编程语言(4)) 协议---声明由别人实现的接口,由别人来实现的方法,为匿名对象声明接口
- Java匿名对象与匿名内部类
- NO8.java笔记【面向对象、抽象类、abstract、接口、interface、多态 、内部类、匿名内部类、异常、Object类】
- java基础 final static 匿名对象 内部类 包的声明与访问 四种访问修饰符 代码块