多态 ---------向下或者向上类型转换
来源:互联网 发布:寒窑赋 知乎 编辑:程序博客网 时间:2024/06/06 07:27
/**
*java 语言中的向上转型和向上转型
* 1.向上转型 upcasting 子--》父 自动类型转换 父类型的引用指向子类型的对象
* 程序在编译阶段是父类的 类型
* 程序在运行阶段实际是子类的类型
* 静态绑定
* 动态绑定
* 2.向下转型 downcasting 父--》子
*
* 注意:向上或者向下转型,两个类之间必须有继承关系
*
* 多态
*1.使用多态可以使代码之间的耦合度降低
*2.项目的扩展能力增强
*
*/
class Animal {
public void eat(){
System.out.println("动物在吃");
}
}
class cat extends Animal{
public void
public void eat(){
System.out.println("猫吃鱼");
}
public void move(){
System.out.println("猫在走猫步");
}
}
public class test{
public static void main(String[] args){
/**
* 向上转型,可以理解为自动的类型转换
* 父类的引用指向子类的对象
* 程序运行的两个阶段:编译阶段 运行阶段
* 编译阶段 认为 a1 是一个 Animal 对象
* 运行时 实际是 cat 对象
*
*
* */
Animal a1=new cat();
/**
* 在编译阶段 a1的引用绑定是Animal 中的eat()方法,(静态绑定)
* 运行的时候 cat 已经重写了eat 方法
* 所以运行阶段,调用的是cat 的eat方法(动态绑定)
*/
a.eat();
/**
* 向下转型:强制类型转换
*
*/
Animal a2=new cat();//向上转型
Cat c1=(Cat)a2;//强制类型转化 java.lang.classCastException
c1.move();
//在强制类型转换的时候,程序是存在风险的。
/**
* 为了避免java.lang.classCastException java 引入了 instanceof
* 用法:
* 1.instanceof 运行结果是 boolean类型
* 2.(引用 instanceof 类型)-->true/false
* (a instanceof Cat ) 如果结果是true 则表明:a 引用指向堆中的java对象是Cat类型
*
* 推荐:在做向下转型的时候,要使用instanceof 判断,避免java.lang.classCastException
*/
Animal a3= new Dog();
if (a3 instanceof Cat) {
Cat c2=(Cat) a3;
}
}
}
- 多态 ---------向下或者向上类型转换
- 向上向下类型转换
- 向上类型转换、向下类型转换
- 向上类型转换与向下类型转换
- 向上类型转换,向下类型转换
- 向上类型转换、向下类型转换
- C++ 向上类型转换、向下类型转换 .
- 向上类型转换和向下类型转换
- 多态、向上(向下)类型转换、instanceof运算符
- java 向上与向下类型转换
- java 向上与向下类型转换
- java 向上与向下类型转换
- C++ 向上与向下类型转换
- C++中的向上类型转换和向下类型转换
- c++中向上类型转换和向下类型转换
- C++中的向上类型转换和向下类型转换
- c++向上类型转换和向下类型转换
- C++中的向上类型转换和向下类型转换 .
- 64. Minimum Path Sum
- static关键字
- tiny4412液晶屏显示实时视频
- WPF 同一窗口内的多线程 UI(VisualTarget)
- 文章标题
- 多态 ---------向下或者向上类型转换
- Git,不得不掌握那些命令行_词汇们
- 简单搭建Mysql主从同步
- 光栅渲染器(五)2d->3d坐标系
- 接口
- Super this 关键字
- 设计模式(单例设计模式)
- 面向对象知识点小记(2)
- 安装laravel-admin产生不了app\Admin文件问题