1.前言

引用教科书解释:

多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作。

通俗来说:

总结:多态的抽象类与接口有点相似;

父类不需要具体实现方法,仅需要定义即可,需要在单独的类继承后成为子类,在子类实现具体方法,
调用父类方法可直接执行子类的重写方法,
可被多个不同的类继承,
子类可直接赋值给父类,但是父类需要强转子类 ,如果一个父类下面有多个子类,那么 父类强转子类之前需要确认此刻
父类是由哪个系类赋值的后才可以转到对应的子类,否则会报错。 可见父类可拥有多种状态,因此,这就称为多态。

2.操作

(1)目录结构

(2)配置一个抽象父类

package com.example.javabaisc.myAbstract;

abstract class Food {
abstract void food();
}

(3)配置两个子类

package com.example.javabaisc.myAbstract;

public class Apple extends Food {
//重新父类
@Override
void food() {
System.out.println("苹果");
} void color(){
System.out.println("red");
}
}

Apple

package com.example.javabaisc.myAbstract;

public class Banana extends Food{
//重写父类
@Override
void food() {
System.out.println("香蕉");
}
void color(){
System.out.println("yellow");
}
}

Banana

(4)测试类

package com.example.javabaisc.myAbstract;

import org.junit.jupiter.api.Test;

public class AbstractTest {

    @Test
public void t(){
// 子类向父类转型
Food food = new Apple();
food.food();
//父类向子类转型
Apple apple = (Apple)food;
apple.color();
System.out.println("//==================================");
// 子类向父类转型后作为参数输入
this.eat(new Apple());
this.eat(new Banana()); } private void eat(Food food){
//执行父类的方法,然后执行子类的重写方法
food.food();
//因为有一个父类被两个不同的子类继承,因此需要判断此时父类是与哪个一类为同一类的,然后才能强制转成子类,成为子类才可以调用子类方法
if (food instanceof Apple){
Apple apple = (Apple)food;
apple.color();
}else if(food instanceof Banana){
Banana banana = (Banana)food;
banana.color();
}
} }

test

3.测试

java 多态 总结的更多相关文章

  1. Java 多态——与C++的比较

    学习了Java和C++之后,由于长期不使用C++,而java的基础知识掌握不牢,现在已经搞不清java多态了.现在先来谈谈java多态,稍后有时间再更新C++的多态,并进行比较~ 一. Java的多态 ...

  2. C++和java多态的区别

    C++和java多态的区别 分类: Java2015-06-04 21:38 2人阅读 评论(0) 收藏 举报  转载自:http://www.cnblogs.com/plmnko/archive ...

  3. 深入理解Java多态机制

    从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令. invokestatic: 调用静态方法. invokespecial: 调用实例构造器<init>方法,私 ...

  4. Java 多态 父类和子类方法的访问控制权限

    Java 多态 父类和子类方法的访问控制权限 @author ixenos 父类和子类方法的访问控制权限 继承是为了扩展类的功能,而这种扩展显然就是对一个原始类的扩展,目的还是向上转型来调用,所以这就 ...

  5. Java多态(二)

    public class ExtendsTest { public static void main(String[] args) { A a1 = new A(); A a2 = new B(); ...

  6. 从JVM角度看Java多态

    首先,明确一下,Java多态的三个必要条件: 1. 继承 2. 子类重写父类方法 3. 父类引用指向子类对象 然后看一个例子 package test.xing; class Father{ prot ...

  7. 关于java多态的理解

    要理解多态,就必须有一个大的理解方向,不然很容易绕进去. 首先知道多态的释义:多态性是指一个名词可以有多种语义. 对于java的多态性学习者来说,就是必须要知道多个同名方法在不同情况下的使用规则. j ...

  8. Java经验杂谈(2.对Java多态的理解)

    多态是面向对象的重要特性之一,我试着用最简单的方式解释Java多态: 要正确理解多态,我们需要明确如下概念:・定义类型和实际类型・重载和重写・编译和运行 其中实际类型为new关键字后面的类型. 重载发 ...

  9. 学JAVA第十六 天,JAVA多态

    今天老师讲了多态的使用 多态是同一个行为具有多个不同表现形式或形态的能力. 多态的优点: 1. 消除类型之间的耦合关系 2. 可替换性  3. 可扩充性 4. 接口性 5. 灵活性 6. 简化性 我个 ...

  10. 对java多态的理解

    java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是“向上转型”. 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过 Cat c = new C ...

随机推荐

  1. VectorCAST - 通过确保测试的完整性控制产品质量

    软件测试面临的问题有一句格言是这样说的,"如果没有事先做好准备,就意味着做好了 失败的准备."如果把这个隐喻应用在软件测试方面,就可以这样说"没有测试到,就意味着测试失败 ...

  2. Apifox(2)快速上手apifox

    快速上手 使用场景 Apifox 是接口管理.开发.测试全流程集成工具,使用受众为整个研发技术团队,主要使用者为前端开发.后端开发和测试人员. 前端开发 接口文档管理 接口数据 Mock 接口调试 前 ...

  3. drone使用git tag作为镜像tag

    官方自动tag plugin/docker 已支持自动标签,使用方法如下 steps: - name: docker image: plugins/docker settings: repo: foo ...

  4. jenkins集成openldap

    参考图片 集成ldap参考链接:https://www.cnblogs.com/mascot1/p/10498513.html

  5. Nginx模块之ngx_http_gzip_module

    Module ngx_http_gzip_module 该ngx_http_gzip_module模块是一个使用"gzip"方法压缩响应的过滤器.这通常有助于将传输数据的大小减少一 ...

  6. shell脚本 screen管理

    一.简介 源码地址 日期:2018/4/12 介绍:使用screen来启动程序,这个脚本可以管理screen 效果图: 二.使用 适用:centos6+ 语言:中文 注意:请先写一个脚本来启动java ...

  7. 让你用Markdown的方式来做PPT

    也许你是以为代码高手,Markdown写作高手,但你是PPT高手吗? 你的成绩有没有被PPT高手抢走过呢? 不会作精美PPT是不是很头疼呢? 今天就给大家介绍了一款PPT制作利器:Slidev~ 说S ...

  8. 删除其他列Table.SelectColumns(Power Query 之 M 语言)

    数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...

  9. 十年后回到百年前?(Excel技巧集团)

    在单元格里输入日期,有时可以偷懒,比如明年的日期可以输入至少一位的年+横杠(或斜杠)+至少一位的月+横杠(或斜杠)+至少一位的日,也就是"21-1-1",单元格里就会自动显示&qu ...

  10. 【Azure Redis 缓存】Azure Cache for Redis 中如何快速查看慢指令情况(Slowlogs)

    问题描述 当 Azure Redis 服务器负载过高的情况下,使用时就会遇见连接超时,命令超时,IO Socket超时等异常.为了能定位是那些因素引起的,可以参考微软官方文档( 管理 Azure Ca ...