今天老师讲了多态的使用

多态是同一个行为具有多个不同表现形式或形态的能力。

多态的优点: 1. 消除类型之间的耦合关系  2. 可替换性   3. 可扩充性  4. 接口性  5. 灵活性  6. 简化性

我个人认为   可替换性    可扩充性   灵活性 到是很充分的体现出来了。

现在就用问题来体现吧 !!!      

1、创建一个动物类
2、创建一个动物的数组,长度2个
3、创建一只猫(有抓老鼠方法)
4、创建一条蛇(有冬眠方法)        就这个问题
5、分别把它们放在动物的数组中。

  创建一个动物类:


package pkg26;

public class Animal{
private String name; public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
}
创建一只猫类
package pkg26;

public class Cat extends Animal{

	public void methodCat(){
System.out.println("我被一只老鼠抓了");
} }
 

创建一条蛇类

 

package pkg26;

public class Snake extends Animal{
@Override//@Override 是帮助自己检查是否正确的复写了父类中已有的方法.
            //告诉读代码的人,这是一个复写的方法
	public void setName(String name){	//这个方法名一定要跟父类中的方法名setName一样!!!
       super.setName(name+"先生");//这是一个重写的方法,可以比这个方法注释起来,运行一遍和不注释运行比较一下 
    }
      public void methodSnake(){
        System.out.println("我吞了一个大象");
      }
}

  

创建一个动物的数组并分别把它们放在动物的数组中,
但是,这都是要借助测试类才能实现的
下边就是测试类:
package pkg26;

public class Test{ public static void main(String args[]){ Animal animals[] = new Animal[2]; animals[0] = new Cat(); 
          //如果我要给一只猫一个名字,那么就要这样做
          /*
            animals[0].setName("小白");//让一只猫叫小白
            System.out.println(animals[0].getName());              
          */
animals[1] = new Snake(); for(Animal o:animals){
//o.setName("123");//这的意思是把所有的动物的名字都设为123
System.out.println(o.getName());
}
}
}
 

JAVA的多态是很抽象的一个很重要的知识点,所以,要在这里下很多很多功夫!!!

所以,带着JAVA多态的优点把我上面的代码反复尝试!!!这样才能更好的学习!!!

还有,昨天,有一个人把我之前写的也看了而且还评论了!!!自己写的东西有人看 真的好开心!!!

  加油!!!

学JAVA第十六 天,JAVA多态的更多相关文章

  1. “全栈2019”Java第五十六章:多态与字段详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  2. 《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)

    1.简介 今天这一篇宏哥主要是结合实际工作中将遇到的测试场景和前边两篇学习的知识结合起来给大家讲解和分享一下,希望以后大家在以后遇到其他的测试场景也可以将自己的所学的知识应用到测试场景中. 2.测试场 ...

  3. “全栈2019”Java第九十六章:抽象局部内部类详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  4. “全栈2019”Java第二十六章:流程控制语句中循环语句do-while

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. “全栈2019”Java第十六章:下划线在数字中的意义

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. 《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)

    1.简介 前边几篇文章是宏哥自己在本地弄了一个单选和多选的demo,然后又找了网上相关联的例子给小伙伴或童鞋们演示了一下如何自动化测试,这一篇宏哥在网上找了一个问卷调查,给小伙伴或童鞋们来演示一下.上 ...

  7. 《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)

    1.简介 前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件.因此宏哥就接着讲解和分享一下:自动化测试下载文件.可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就 ...

  8. 《手把手教你》系列技巧篇(六十六)-java+ selenium自动化测试 - 读写excel文件 - 上篇(详细教程)

    1.简介 在自动化测试,有些我们的测试数据是放到excel文件中,尤其是在做数据驱动测试的时候,所以需要懂得如何操作获取excel内的内容.由于java不像python那样有直接操作Excle文件的类 ...

  9. 《手把手教你》系列基础篇(八十六)-java+ selenium自动化测试-框架设计基础-Log4j实现日志输出(详解教程)

    1.简介 自动化测试中如何输出日志文件.任何软件,都会涉及到日志输出.所以,在测试人员报bug,特别是崩溃的bug,一般都要提供软件产品的日志文件.开发通过看日志文件,知道这个崩溃产生的原因,至少知道 ...

  10. Java学习笔记(十六)——Java RMI

    [前面的话] 最近过的好舒服,每天过的感觉很充实,一些生活和工作的技巧注意了就会发现,其实生活也是可以过的如此的有滋有味,满足现在的状况,并且感觉很幸福. 学习java RMI的原因是最近在使用dub ...

随机推荐

  1. [翻译 EF Core in Action 2.3] 理解EF Core数据库查询

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  2. 目标检测之YOLO V1

    前面介绍的R-CNN系的目标检测采用的思路是:首先在图像上提取一系列的候选区域,然后将候选区域输入到网络中修正候选区域的边框以定位目标,对候选区域进行分类以识别.虽然,在Faster R-CNN中利用 ...

  3. Spark学习之数据读取与保存总结(一)

    一.动机 我们已经学了很多在 Spark 中对已分发的数据执行的操作.到目前为止,所展示的示例都是从本地集合或者普通文件中进行数据读取和保存的.但有时候,数据量可能大到无法放在一台机器中,这时就需要探 ...

  4. jQuery杂谈一

    1.jQuery对象 jQuery包装集对象 获得mydiv的Jquery对象: var divJquery = $("#mydiv"); 2.基础选择器 1.ID选择器格式:$( ...

  5. 事务是什么?事务的4个特点(ACID),事务的开启与结束

    事务是指作为单个逻辑工作单元执行的一组相关操作.这些操作要求全部完成 或者全部不完成.使用事务是为了保证数据的安全有效. 事务有一下四个特点:(ACID) 1.原子性(Atomic):事务中所有数据的 ...

  6. Hadoop大数据部署

    Hadoop大数据部署 一. 系统环境配置: 1. 关闭防火墙,selinux 关闭防火墙: systemctl stop firewalld systemctl disable firewalld ...

  7. (leetcode:选择不相邻元素,求和最大问题):打家劫舍(DP:198/213/337)

    题型:从数组中选择不相邻元素,求和最大 (1)对于数组中的每个元素,都存在两种可能性:(1)选择(2)不选择,所以对于这类问题,暴力方法(递归思路)的时间复杂度为:O(2^n): (2)递归思路中往往 ...

  8. [翻译 EF Core in Action 1.8] MyFirstEfCoreApp应用程序设置

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  9. 【swoole】如何在docker+swoole环境下测试udp服务

    前面几篇文章讲了使用 docker+swoole 环境来测试tcp服务以及如何测试,但是当我开始学习udp服务那块的时候,发现使用原来的方式在 docker+swoole 环境下行不通啦,后来发现如果 ...

  10. SQLServer之删除数据库架构

    删除数据库架构注意事项 要删除的架构不能包含任何对象. 如果架构包含对象,则 DROP 语句将失败. 可以在 sys.schemas 目录视图中查看有关架构的信息. 要求对架构具有 CONTROL 权 ...