首页 > 编程语言 >Java 类多态的向上转型

Java 类多态的向上转型

时间:2024-08-06 15:06:57浏览次数:14  
标签:System Java void 多态 display class 转型 public out

  假定Base b = new Derived(); 调用执行b.methodOne()后,输出结果是什么?

 1 public class Base
 2 {
 3    public void methodOne()
 4    {
 5       System.out.print("A");
 6       methodTwo();
 7    }
 8  
 9    public void methodTwo()
10    {
11       System.out.print("B");
12    }
13 }
14  
15 public class Derived extends Base
16 {
17    public void methodOne()
18    {
19       super.methodOne();
20       System.out.print("C");
21    }
22  
23    public void methodTwo()
24    {
25       super.methodTwo();
26       System.out.print("D");
27    }
28 }

 

 

一、什么是向上转型

1、概念

向上转型就是创建一个子类对象,将其当成父类对象来使用。

语法格式:父类类型  对象名  =  new  子类类型()

                     Animal   animal  =  new Cat ();

 

Animal 是父类类型,但可以引用 Cat这个子类类型,因为是从小范围到大范围的转换。

 

 1 class Aminal {
 2     public void display() {
 3         System.out.println("Animal");
 4     }
 5 }
 6 class Cat extends Aminal {
 7     public void display() {
 8         System.out.println("Cat");
 9     }
10 }
11 class Dog extends Aminal {
12  
13 }
14  
15 public class Main{
16     public static void main(String[] args) {
17         Aminal aminal1 = new Aminal();
18         Aminal aminal2 = new Cat();
19         Aminal aminal3 = new Dog();
20  
21         aminal1.display();
22         aminal2.display();
23         aminal3.display();
24     }
25 }

animal2中,Cat类 重写了 display方法,所以在实现时,打印的是Cat类中实现的内容。

animal3中,Dog类 没有重写 display方法,所以打印的还是父类中的内容。

由此我们可以得出:向上转型实现时

先看子类有没有

若是子类找不到

再看父类有没有

二者都无则报错!

3、向上转型的优缺点

优点:让代码实现更简单灵活

缺点:不能调用到子类特有的方法

class Animal {
    public void display() {
        System.out.println("Animal");
    }
}
 
class Dog extends Animal {
    public void display() {
        System.out.println("dog");
    }
 
    public void eat() {
        System.out.println("吃骨头");
    }
}
 
public class Main {
    public static void main(String[] args) {
        Animal animal = new Dog();
 
        animal.display();
        animal.eat(); //会报错
    }
}

 

所以,向上转型无法调用子类特有的方法!

 

                           

标签:System,Java,void,多态,display,class,转型,public,out
From: https://www.cnblogs.com/leijinquan/p/18345175

相关文章

  • 数据飞轮驱动消费行业变革,火山引擎数智平台助力门店数智化转型
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 8月1日,数据飞轮消费行业研讨会在上海举办。火山引擎数智平台与参会的消费行业企业,共同探讨了消费零售行业线上线下融合趋势,与数据工具在推动消费企业数智化转型上的助力。 据国家......
  • Java 用jetty实现HTTP服务器 获取 Get 请求体
    Java用jetty开发HTTP服务器来获取每次GET请求中的请求体监听本机IP地址 中的 /httpCli 端口5011Main.javapackagecom.JettyServer;importorg.eclipse.jetty.server.Server;importorg.eclipse.jetty.server.handler.ContextHandler;importorg.eclipse.......
  • 模块化叙事的演变:DeFi借贷开发的模块化转型
    随着区块链技术的不断发展,去中心化金融(DeFi)正经历一场深刻的变革。模块化借贷作为这一变革的重要部分,正逐渐成为加密金融领域的焦点。本文将探讨模块化借贷的起源、演变及其未来发展方向。一、模块化的起源模块化区块链的概念源自2018年由MustafaAlbasan和VitalikButerin......
  • Java 继承和多态(进阶介绍 十六)
    目录Java继承IS-A关系实例实例instanceof关键字HAS-A关系例子Java多态简单的例子虚方法多态的实现方式方式一:重写方式二:接口Java继承继承是所有OOP语言和Java语言不可缺少的组成部分。继承是Java面向对象编程技术的一块基石,是面向对象的三大特征......
  • Java计算机毕业设计家乐在线家装平台(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网的普及和人们生活水平的提高,家装行业正经历着前所未有的变革。传统家装模式存在信息不对称、流程繁琐、效率低下等问题,难以满足消费者日益......
  • Java计算机毕业设计课程在线测评系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,在线教育已成为教育领域的重要组成部分,其灵活性和便捷性受到广大师生的青睐。然而,如何有效评估在线教育的学习效果,确保教学质......
  • Java计算机毕业设计咖啡馆管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着咖啡文化的普及和消费者对品质生活追求的不断提升,咖啡馆作为休闲聚会、商务洽谈的重要场所,其数量与规模在全球范围内迅速增长。然而,传统的手工管......
  • Java计算机毕业设计家教服务网(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今社会,随着教育竞争的日益激烈和家长对孩子教育质量的重视,家教服务已成为许多家庭提升孩子学习成绩、培养综合素质的重要途径。然而,传统的家教服......
  • 基于Java+SpringBoot+Mysql实现的在线电影订票系统部分功能设计与实现五
    一、前言介绍:1.1项目摘要随着互联网技术的飞速发展和普及,人们的娱乐消费方式发生了巨大变化。在线娱乐平台,特别是电影订票系统,成为了现代人观影的主要选择之一。这一变化主要得益于以下几个方面的因素:生活节奏的加快:现代人的生活节奏越来越快,时间变得尤为宝贵。在线电影......
  • 基于Java+SpringBoot+Mysql实现的在线电影订票系统部分功能设计与实现六
    一、前言介绍:1.1项目摘要随着互联网技术的飞速发展和普及,人们的娱乐消费方式发生了巨大变化。在线娱乐平台,特别是电影订票系统,成为了现代人观影的主要选择之一。这一变化主要得益于以下几个方面的因素:生活节奏的加快:现代人的生活节奏越来越快,时间变得尤为宝贵。在线电影......