首页 > 编程语言 >JAVA高级面向对象二:认识多态 多态的好处

JAVA高级面向对象二:认识多态 多态的好处

时间:2024-03-23 17:33:06浏览次数:27  
标签:JAVA People void 多态 System 面向对象 public out

1.多态:在继承/实现情况下的一种现象,表现为对象多态(儿子,学生),行为多态(跑的快慢)

方法编译看左边,运行看右边   

变量编译看左边,运行看左边

 

package com.itheima.多态;

public class Test {
//对象多态,行为多态
public static void main(String[] args) {
//1.对象多态
People p1=new Teacher();
p1.run();//行为多态 识别技巧:编译看左边,运行看右边
System.out.println(p1.name);
People p2=new Student();
p2.run();
System.out.println(p2.name);
}

}

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

}
class Student extends People{
public String name="子类Student的名称";

@Override
public void run(){
System.out.println("跑的块");
}
}
class Teacher extends People{
public String name="子类Teacher的名称";

@Override
public void run(){
System.out.println("跑的气喘吁吁");
}
}


 

 

 

 

 

2.多态的好处:

 

 

 

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();//报错,因为编译看左边,父类没有所以报错了
    }
    //好处2:可以使用父类类型的变量作为形参,可以接受一切子类对象
    public static void go(People p){

    }

}

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("跑的气喘吁吁");
    }
}

标签:JAVA,People,void,多态,System,面向对象,public,out
From: https://www.cnblogs.com/pengsuoqun123/p/18091376

相关文章

  • 第十三届蓝桥杯省赛真题 Java C 组【原卷】
    文章目录发现宝藏【考生须知】试题A:排列字母试题B:特殊时间试题C:纸张尺寸试题D:求和试题E:\mathbf{E}:......
  • 面向对象和面向过程
    最近在使用lvgl,发现写代码的过程种面向过程的思维特别浓,导致lvgl的学习使用又增加了不少难度。首先你要计算来确保lvgl足够的资源使用(内存,cpu),然后就不要太完全关心lvgl的实现细节了。因为有足够资源使用了,关心底层代码自会白白增加时间。想,mcu什么时候可以面向对象呢?先计算好......
  • 【附源码】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源码和数据库参考。系统程序文件列表开题报告内容研究背景随着数字技术的迅猛发展,音乐产业正在经历一场深刻的变革。传统音乐销售模式逐渐式微,而在线音乐平台以其便捷性、多样性和互动性,迅速占领了市场。当前......
  • Java程序设计基础 第一章:Java的历史、环境搭建
        Java是一种计算机编程语言;除了java还有很多编程语言:c语言、c++、c#、python等,不同的计算机编程语言语法不同;应用场景不同;                                                 java是一种后端开发编程语言一、......