首页 > 编程语言 >JAVA高级面向对象二:多态下的类型转换问题

JAVA高级面向对象二:多态下的类型转换问题

时间:2024-03-23 17:56:44浏览次数:25  
标签:类型转换 p1 JAVA People void 多态 public Student Teacher

 

package com.itheima.多态;

public class Test {
    //多态好处
    public static void main(String[] args) {
//        //好处1:实现解耦合,右边对象可以随时切换,后续业务随即改变
//        People p1=new Teacher();
//        p1.run();
//        //好处2:可以使用父类类型的变量作为形参,可以接受一切子类对象
//        Student student=new Student();
//        Teacher teacher=new Teacher();
//        go(student);
//        go(teacher);
//        //p1.teach();//报错,因为编译看左边,父类没有所以报错了

        People p1=new Teacher();
        Teacher s1=(Teacher) p1;//强制类型转换
        go(p1);
        //s1.teach();//强制类型转换可能存在问题:编译阶段有继承或者实现关系就可以进行强制转换,但是运行时可能出现类型转换异常
    }
    //好处2:可以使用父类类型的变量作为形参,可以接受一切子类对象
    public static void go(People p){
        if(p instanceof Teacher){//判断p对象指向老师还是学生
            Teacher s2=(Teacher) p;
            s2.teach();
        }
        else {
            Student s2=(Student) p;
            s2.test();
        }
    }

}

class People{
    public String name="父类People的名称";
    public void run(){
        System.out.println("人可以跑");
    }

}
class Student extends People{
    public String name="子类Student的名称";
    public void test(){
        System.out.println("考试");
    }
    @Override
    public void run(){
        System.out.println("跑的块");
    }
}
class Teacher extends People{
    public String name="子类Teacher的名称";
    public void teach(){
        System.out.println("教书");
    }
    @Override
    public void run(){
        System.out.println("跑的气喘吁吁");
    }
}

 

标签:类型转换,p1,JAVA,People,void,多态,public,Student,Teacher
From: https://www.cnblogs.com/pengsuoqun123/p/18091407

相关文章

  • JAVA非阻塞IO、异步IO(NIO、AIO)-摘自《netty权威指南》
    一、JAVANIO在介绍NIO编程之前,我们首先需要澄清一个概念:NIO到底是什么的简称?有人称之为NewI/O,因为它相对于之前的I/O类库是新增的,所以被称为NewI/O,这是它的官方叫法。但是,由于之前老的I/O类库是阻塞I/O,NewI/O类库的目标就是要让Java支持非阻塞I/O,所以,更多的人喜欢称之为非阻......
  • JAVA高级面向对象二:认识多态 多态的好处
    1.多态:在继承/实现情况下的一种现象,表现为对象多态(儿子,学生),行为多态(跑的快慢)方法编译看左边,运行看右边  变量编译看左边,运行看左边 packagecom.itheima.多态;publicclassTest{//对象多态,行为多态publicstaticvoidmain(String[]args){//1.对象......
  • 第十三届蓝桥杯省赛真题 Java C 组【原卷】
    文章目录发现宝藏【考生须知】试题A:排列字母试题B:特殊时间试题C:纸张尺寸试题D:求和试题E:\mathbf{E}:......
  • 【附源码】java数字家谱管理系统(ssm毕业设计+maven+vue+计算机专业)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义标题:数字家谱管理系统的选题背景及其意义随着信息技术的快速发展,数字化已经成为现代社会的一种趋势。在传统文化的传承与保护方面,数字技术的应用尤为重要。家谱作......
  • 【附源码】java双端的在线学习考试平台(ssm毕业设计+maven+vue+计算机专业)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在信息技术日益发展的今天,教育行业也在经历着前所未有的变革。传统的面对面教学模式逐渐向线上教育模式转变,这一趋势在全球范围内愈发明显。尤其是在全球......
  • Error: Could not find or load main class org.apache.hadoop.hbase.util.GetJavaPro
    Hbase没有将其自身的依赖包添加到classpath配置路径所以才会导致找不到自身主类的报错vim/usr/local/hbase/bin/hbase 在161行出修改CLASSPATH="${HBASE_CONF_DIR}"CLASSPATH=${CLASSPATH}:$JAVA_HOME/lib/tools.jar:/usr/local/hbase/lib/*修改成功后,不再报错......
  • Java基础入门:数据、控制与异常全解析
    Java基础知识回顾:数据类型、控制结构、异常处理Java作为一门面向对象的编程语言,具有丰富的数据类型、灵活的控制结构和强大的异常处理机制。本篇文章将带大家回顾Java的基础知识,包括数据类型、控制结构和异常处理,希望对大家有所帮助。1.数据类型Java中的数据类型分为基......
  • 【Java】二叉搜索树
    文章目录一、搜索树二、使用代码实现一棵二叉搜索树1.查找2.插入3.删除(重点)总结一、搜索树二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节......
  • 【附源码】JAVA计算机毕业设计音乐平台设计与实现(springboot+mysql+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,互联网已经渗透到人们生活的方方面面,音乐作为人们日常生活的重要娱乐方式,其在线化、平台化的发展趋势日益明显。近年来,音乐平......
  • 【附源码】JAVA计算机毕业设计音乐平台的设计(springboot+mysql+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着数字技术的迅猛发展,音乐产业正在经历一场深刻的变革。传统音乐销售模式逐渐式微,而在线音乐平台以其便捷性、多样性和互动性,迅速占领了市场。当前......