当前位置: 首页 > news >正文

多态的优势和弊端

目录

1.多态的优势

2.多态的弊端是什么?

3.引用数据类型的类型,转换有几种方式

4.强制类型转换能解决什么问题楠?


1.多态的优势

   方法中,使用父类作为参数,可以接收所有子类的对象

package ploydemo3;import java.util.ArrayList;public class Test {public static void main(String[] args) {//ArrayList<String> list = new ArrayList<>();//只能添加String类型的 泛型ArrayList list = new ArrayList<>();//任意数据添加list.add(4444);list.add("aaaa");System.out.println(list);}
}

2.多态的弊端是什么?

     不能使用子类的特有功能

package ploydemo3;public class Test2 {public static void main(String[] args) {Animal a =new Dog();//编译看左边,运行看右边a.eat();//多态的弊端//不能调用子类特有的功能//为什么报错//当调用成员方法的时候,编译看左边,运行看右边//那么在编译的时候会先检查左边的父类有没有这个方法,如果没有直接报错a.lookHome();//不能调用子类对象//解决方案//变回子类类型就可以了//细节:转回的时候不能瞎转,如果转或其他类的类型,就会报错//        int b=9;
//        byte c=(byte)b;
//        Dog d= (Dog) a;
//        d.lookHome();}
}class Animal{public void eat(){System.out.println("动物在吃东西");}
}class Dog extends Animal{@Overridepublic void eat() {System.out.println("狗吃骨头");}public void lookHome(){System.out.println("狗看家");}
}class Cat extends Animal{@Overridepublic void eat() {System.out.println("猫吃小鱼干 ");}public void CatchMouse(){System.out.println("猫抓老鼠");}
}

3.引用数据类型的类型,转换有几种方式

1.自动类型转换   

Person p=new Student;

2.强转类型转换

Student s=(Student)p;

4.强制类型转换能解决什么问题楠?

  可以转换成真正的子类类型,从而调用子类独有的功能。

 if(a instanceof Dog){Dog c=(Dog)a;c.lookHome();}else if(a instanceof Cat){Cat c=(Cat)a;c.CatchMouse();}else {System.out.println("没有这个类型,午饭转换");}

转换类型与真实对象类型不一致会报错

转换的时候用instanceof关键字进行判断

http://www.lryc.cn/news/34859.html

相关文章:

  • android h5考勤管理系统myeclipse开发mysql数据库编程服务端java计算机程序设计
  • 第二道pwn题:shellcode
  • 《华为数据之道》读书笔记
  • C++源码pcl1.13.0库编译环境搭建及配置
  • Idea工具单工程使用卡顿设置
  • Android 9.0 Camera2退出时屏幕旋转为横屏
  • 【云原生】rancher2.6部署MySQL—2023.03
  • 行测-判断推理-图形推理-样式规律-空间重构-立体拼合
  • 细说蛮力法(一)
  • 关于推荐系统的详细介绍
  • leetCode刷题笔记
  • 数学小课堂:数学和哲学的互动关系(自洽的哲学思想受益于数学思维)
  • 大聪明教你学Java | 带你了解 Redis 的三种集群模式
  • Java中异常(异常的处理方式(JVM默认的处理方式、自己处理(灵魂四问)、抛出异常(throws、throw))、异常中的常见方法、小练习、自定义异常)
  • 液氮恒温器概述
  • Shiro核心——Realm
  • 开发钉钉微应用,实现免登+调试
  • 0308java基础-注解,反射
  • 【鸿蒙应用ArkTS开发系列】- 页面跳转及传参
  • StringBuilder 类
  • kubectl-k8s用户切换
  • 【面试题】三道面试题让你掌握JavaScript中的执行上下文与作用域以及闭包
  • 计算机网络-- 应用层(day08)
  • English Learning - L2-5 英音地道语音语调 弹力双元音 [ɪə] [ʊə] [eə] 2023.03.6 周一
  • SpringBoot——统一功能处理
  • ORACLE SQL格式化小数点
  • 【信息学奥数】—— 第一部分 C++语言 知识总结
  • video层级过高,以及界面使用多个video时,在安卓APP上同时播放的问题(uniapp)
  • C++基础了解-14-C++ 字符串
  • 浅谈几种网络攻击及攻防原理