美文网首页java随笔
多态 ---- 内部类

多态 ---- 内部类

作者: 71150ce14a00 | 来源:发表于2017-06-23 19:04 被阅读1次

多态: 父类的引用指向子类对象,或者接口指向实现类 Animal an = new Dog();

前提:必须要有继承,或者接口实现
好处: 可以通过父类管理子类,提高代码复用性

注意: 我们在使用多态的时候,永远只能使用父类的类型接收子类的类型

多态弊端:
在使用多态技术的时候, 程序在编译的时候,使用多态调用成员(成员变量,成员函数) 要求被调用的成员一定在父类中存在,如果父类中没有,那么编译就会失败(不能使用子类属性或者函数)

注意: 只要有多态的地方,一定发生着类型转换(把子类的对象用父类表示)
隐式类型转换 小的给大的赋值 double d = 12; Animal a = new Dog();
强制转换类型 缺点: 丢失数据 Cat c = (Cat) animal;

多态中的类型转换有两种:
1 向上转型(隐式的类型提升)父引用指向子类对象 例如: Animal an = new Dog();
2 向下转型(强制类型转换或者把父类类型转成子类类型) 例如: Dog d = (Dog)an;

什么时候使用向下类型转换: 只要在程序中需要使用子类的特有属性的时候,无论是向上还是向下,最终都是子类对象做着类型转化

向下转型有风险, 使用需谨慎,要是用前先做判断: 被转引用类型 instanceof 被转成的类型

在多态中成员变量: 永远只会使用父类中的成员变量, 不会使用子类中的成员变量
多态调用静态函数: 对于静态成员方法,无论是编译还是运行, 只看父类,和子类无关
多态中调用非静态函数: 编译要求父类必须存在, 运行先看子类,如果子类有执行子类,如果没有执行父类

内部类:

在内部类中可以直接访问外部类中所有成员, 而外部类不能直接访问内部类中成员,需要创建内部类对象访问

对于局部内部类使用外部类的局部变量注意事项: 局部变量一定要加 final

匿名内部类 必须在成员函数中
匿名内部类其实就是一个带有内容的子类对象
new 父类或者父接口(){
复写父类或者父接口中的方法
}
整体是子类对象
{}里边的是匿名内部类
父类或者父类接口名字 = new 父类或父类接口(){ // 这里实行多态
// 父类 // 子类对象
}

相关文章

  • 多态 ---- 内部类

    多态: 父类的引用指向子类对象,或者接口指向实现类 Animal an = new Dog(); 前提:必须要有...

  • 内部类

    成员内部类 局部内部类(定义在方法内和定义在作用域内的类) 匿名内部类

  • JAVA面向对象-day04

    A 抽象类 接口 多态(意义) 强制转型 instanceof关键字 匿名内部类

  • JAVA中的内部类和 JAVA 的持有对象

    内部类 为什么 在JAVA 中每个内部类都能实现一种接口,这也是实现多态的一种方式。无论外部类是否已经实现了该接口...

  • 面向对象总结

    面向对象思想 类与对象 定义类格式: 面向对象的三大特征 封装 继承 多态: 抽象类 接口 内部类 匿名内部类: ...

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

  • Java学习——内部类

    内部类 一,成员内部类(包括静态内部类和非静态内部类) 非静态内部类可以直接访问外部类的成员,反之则不行 非静态内...

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • Java内部类.继承.多态

    类里边包含:成员变量/构造方法/方法/代码块/内部类/继承/多态/组合 在创建一个对象之前需要做点事情 构造函数 ...

  • 多态——匿名内部类——lambda

    1、多态 1.1多态的概念 1.父类引用指向子类对象2.一对象多种状态 1.2前提 有继承或者实现 1.3代码形式...

网友评论

    本文标题:多态 ---- 内部类

    本文链接:https://www.haomeiwen.com/subject/lgaccxtx.html