首页 > 其他分享 >day03

day03

时间:2024-01-29 22:56:14浏览次数:23  
标签:day03 void 多态 public Student println Teacher

  • 多态
    多态是在继承、实现情况下的一种现象,表现为:对象多态、行为多态
    多态前提:有继承/实现关系;存在父类引用子类对象;存在方法重写
    多态的好处:
  1. 解耦:在多态形式下,右边的代码是解耦合的,更便于扩展和维护。
  2. 拓展性强:定义方法时,使用父类类型作为形参,可以接收一切子类对象,扩展性更强,更便利。

Teacher类增加 teach方法;Student类增加 study方法

```学生类
public class Student extends People {

    @Override
    public void run() {
        System.out.println("学生跑得飞快----");
    }

    public void study(){
        System.out.println("学生在学习");
    }

}

public class Teacher extends People {

    @Override
    public void run() {
        System.out.println("老师跑得慢----");
    }

    public void teach(){
        System.out.println("老师会教学");
    }
}
public class Test02 {
    public static void main(String[] args) {
        //老师跑步
        Teacher t = new Teacher();
        go(t);
        //学生跑步
        Student s = new Student();
        go(s);
    }
    /**
     * 人跑步方法
     * @param p
     */
    public static void go(People p){
        System.out.println("预备---开始---跑");
        p.run();
        p.teach();//会报错
        p.study();//会报错
        System.out.println("到终点了----结束");
    }
}

在多态形式下,不能调用子类特有的方法
解决方案:类型转换

```instanceof可以避免类型转换异常 使用:在强转前先通过instanceof关键字判断当前对象是否属于某个类型
 p.run();
 if(p instanceof Teacher) {
            Teacher t = (Teacher) p;
            t.teach();
        } else if(p instanceof Student){
            Student s = (Student) p;
            s.study();
        }

标签:day03,void,多态,public,Student,println,Teacher
From: https://www.cnblogs.com/hmxjc/p/17995531

相关文章

  • MetaGPT day03 MetaGPT 订阅智能体
    订阅智能体基本介绍#什么是订阅智能体MetaGPT提供了Agent的开发能力,Agent可以协助我们解决日常的一些问题,其中一个应用场景就是我们可以让Agent为我们关注某些想关注的信息,当有我们关注的事件发生时,Agent获取信息并进行处理,然后通过一些如邮件、微信、discord等通知渠道将处理......
  • day03 转义字符和注释
    转义字符注意:韩顺平教育/r北京输出结果:北京平教育。意思是回车回到当前行韩顺平教育/r/n北京输出结果:韩顺平教育换行后北京注释单行注释//xxx多行注释/*xxx*/文档注释,对类进行注释,用javadoc可以生成HTML文件/***xxx*/java代码规范......
  • day03 代码随想录算法训练营 203. 移除链表元素
    题目:203.移除链表元素我的感悟:题目里的节点是已经给好的,创建虚拟节点,是为了方便处理头节点。加油,我可以的!!!!!理解难点:节点已经给好的创建虚拟节点代码难点:p是临时变量,类似于foriinrange(10)这里的i,本身是用完就扔的。返回值为什么不能是p.next?因为p是一个指针,......
  • 代码随想录day03 链表删除 链表类的实现 反转链表
    首先是链表的删除操作热身题这里使用了一个新的头指针这样在删除头指针的时候就不需要进行额外的判断然后是链表类的实现需要一点背诵加上深刻理解有时候理解了但是写起来还是会有些指针边界的小问题应该多写写多记一下就会好了还有就是手写链表要常复习吧学习新......
  • day03 Redis
    day03RedisRedis是一个基于内存的key-value结构数据库,方便存储。1.1Redis服务启动与停止服务启动命令redis-server.exeredis.windows.conf修改Redis配置文件设置Redis服务密码,修改redis.windows.con重启Redis后,再次连接Redis时,需加上密码,否则连接失败。redis......
  • Day03-04英语名词
    Day03-04英语名词解释1.Commentanduncommentcode:对代码进行注释和取消注释。“Comment”:在代码中添加注释“uncomment”:删除注释。2.shortcut:快捷方式,简化的方法3.compatible:兼容的4.assign是一个英语单词,意思是“分配;指派;赋值”。5.primitive:“原始的;简单的;6.vulner......
  • Day03转义字符
    Day03转义字符\n:换行符,用于在文本中插入一个新行。\r:回车符,用于将光标移动到当前行的开头。\t:制表符,用于在文本中插入一个制表位。\":双引号,用于在字符串中插入一个双引号字符。\':单引号,用于在字符串中插入一个单引号字符。\\:反斜杠,用于在字符串中......
  • Day03.5
    HelloWorld编写代码随便新建一个文件夹,存放代码新建一个java文件文件后缀名为.java(例:hello.java)【注意点】系统可能没有显示文件后缀名,我们需要手动打开编写代码publicclassHello{ publicstaticvoidmain(String[]args){ System.out.print("Hell......
  • Day03
    Java入门卸载JDK删除Java的安装目录(系统-高级系统设置-环境变量-查看目录安装位置)删除Java_HOME(系统-高级系统设置-环境变量)删除path下关于Java的目录(系统-高级系统设置-环境变量)控制台中查看java-version安装JDK百度搜索JDK8,找到下载地址同意协议下载电脑对应......
  • JavaWeb - Day03 - Ajax、前端工程化、Element
    01.Ajax-介绍Ajax概念:AsynchronousJavaScriptAndXML,异步的JavaScript和XML。作用:数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据。异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用的校验等等......