Java基础2022/11/23韩顺平课程笔记Java多态-创新互联
多态
新闻名称:Java基础2022/11/23韩顺平课程笔记Java多态-创新互联
分享地址:http://pwwzsj.com/article/iegsp.html
- 对象的多态
- 向上转型(只能调用父类方法)
- 向下转型(可以调用子类方法)
- `instanceof`比较操作符
- Java动态绑定机制
- `==`比较运算符
- `equals`方法
- `hashCode`方法
- `toString`方法
- `finalize`方法:垃圾回收器
- 一个对象的编译类型和运行类型可以不一致
- 编译类型在定义对象时,就确定了,不能改变
- 运行类型是可以变化的,由JVM机自行判断
- 编译类型看定义时
=
号的左边,运行类型看=
号的右边
- 语法:
父类类型 引用名 = new 子类类型();
- 可以调用父类中的所有成员(需遵守访问权限)
- 不能调用子类特有的成员
- 编译阶段,能调用哪些成员是由编译类型决定的
- 最终运行效果看子类(运行类型)的具体实现,即调用方法,按照从子类(运行类型)开始查找方法,然后调用。
Animal animal = new Dog("喻狗驹"); //向上转型
animal.cry();
向下转型(可以调用子类方法)- 语法:
子类类型 引用名 = (子类类型)父类引用;
- 只能强转父类的引用,不能强转父类的对象
- 要求父类的引用必须指向当前目标类型的对象
- 可以调用子类类型中所有的成员
Animal animal = new Dog("喻狗驹");
animal.cry();
Dog dog = (Dog) animal; //向下转型
dog.print();
- 属性
- 属性没有重写之说!属性的值直接看
编译类型
- 属性没有重写之说!属性的值直接看
Animal animal = new Dog("喻狗驹");
animal.cry();
System.out.println(animal.age); //此时输出animal类的age
Dog dog = (Dog) animal;
System.out.println(dog.age); //此时输出dog类的age
instanceof
比较操作符- 用于判断对象的
运行类型
是否为XX类型或XX类型的子类型。
Animal animal = new Animal();
Dog dog = new Dog();
System.out.println(dog instanceof Animal); //true
System.out.println(dog instanceof Dog); //true
Animal animals = new Dog();
System.out.println(animals instanceof Dog); //true
System.out.println(animals instanceof Animal); //true
Java动态绑定机制- 当调用对象方法时,该方法会和该对象的内存地址/运行类型绑定
- 当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用
- 多态数组:数组的定义类型为父类类型,里面保存的实际元素类型为子类类型
==
比较运算符==
既可以判断基本类型,也可以判断引用类型- 如果判断基本类型,判断的是值是否相等;
- 如果判断引用类型,判断的是地址是否相等,即判断引用的
是否是同一个对象
equals
方法- 是
Object
类中的方法,只能判断引用类型 - 默认判断的是地址是否相等(子类未重写的情况下,比较是否是引用同一个对象),子类往往重写该方法,用于判断
内容是否相等
,可以不是同一个对象。
hashCode
方法- 该方法为了提高哈希结构的容器的效率
- 两个引用,如果指向的是同一个对象,则哈希值是一样的;如果指向的是不同对象,则哈希值是不一样的(一般而言)
- 哈希值主要根据地址号来的,不能完全将哈希值等价于地址
toString
方法- 返回对象的字符串表示,默认返回:
全类名(包名+类名)+@+哈希值的十六进制
- 子类往往重写
toString
方法,用于返回对象的属性信息 - 打印对象或者拼接对象时,都会自动调用该对象的
toString
方法
finalize
方法:垃圾回收器
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
新闻名称:Java基础2022/11/23韩顺平课程笔记Java多态-创新互联
分享地址:http://pwwzsj.com/article/iegsp.html