java 多态 总结
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 多态 总结的更多相关文章
- Java 多态——与C++的比较
学习了Java和C++之后,由于长期不使用C++,而java的基础知识掌握不牢,现在已经搞不清java多态了.现在先来谈谈java多态,稍后有时间再更新C++的多态,并进行比较~ 一. Java的多态 ...
- C++和java多态的区别
C++和java多态的区别 分类: Java2015-06-04 21:38 2人阅读 评论(0) 收藏 举报 转载自:http://www.cnblogs.com/plmnko/archive ...
- 深入理解Java多态机制
从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令. invokestatic: 调用静态方法. invokespecial: 调用实例构造器<init>方法,私 ...
- Java 多态 父类和子类方法的访问控制权限
Java 多态 父类和子类方法的访问控制权限 @author ixenos 父类和子类方法的访问控制权限 继承是为了扩展类的功能,而这种扩展显然就是对一个原始类的扩展,目的还是向上转型来调用,所以这就 ...
- Java多态(二)
public class ExtendsTest { public static void main(String[] args) { A a1 = new A(); A a2 = new B(); ...
- 从JVM角度看Java多态
首先,明确一下,Java多态的三个必要条件: 1. 继承 2. 子类重写父类方法 3. 父类引用指向子类对象 然后看一个例子 package test.xing; class Father{ prot ...
- 关于java多态的理解
要理解多态,就必须有一个大的理解方向,不然很容易绕进去. 首先知道多态的释义:多态性是指一个名词可以有多种语义. 对于java的多态性学习者来说,就是必须要知道多个同名方法在不同情况下的使用规则. j ...
- Java经验杂谈(2.对Java多态的理解)
多态是面向对象的重要特性之一,我试着用最简单的方式解释Java多态: 要正确理解多态,我们需要明确如下概念:・定义类型和实际类型・重载和重写・编译和运行 其中实际类型为new关键字后面的类型. 重载发 ...
- 学JAVA第十六 天,JAVA多态
今天老师讲了多态的使用 多态是同一个行为具有多个不同表现形式或形态的能力. 多态的优点: 1. 消除类型之间的耦合关系 2. 可替换性 3. 可扩充性 4. 接口性 5. 灵活性 6. 简化性 我个 ...
- 对java多态的理解
java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是“向上转型”. 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过 Cat c = new C ...
随机推荐
- VectorCAST - 通过确保测试的完整性控制产品质量
软件测试面临的问题有一句格言是这样说的,"如果没有事先做好准备,就意味着做好了 失败的准备."如果把这个隐喻应用在软件测试方面,就可以这样说"没有测试到,就意味着测试失败 ...
- Apifox(2)快速上手apifox
快速上手 使用场景 Apifox 是接口管理.开发.测试全流程集成工具,使用受众为整个研发技术团队,主要使用者为前端开发.后端开发和测试人员. 前端开发 接口文档管理 接口数据 Mock 接口调试 前 ...
- drone使用git tag作为镜像tag
官方自动tag plugin/docker 已支持自动标签,使用方法如下 steps: - name: docker image: plugins/docker settings: repo: foo ...
- jenkins集成openldap
参考图片 集成ldap参考链接:https://www.cnblogs.com/mascot1/p/10498513.html
- Nginx模块之ngx_http_gzip_module
Module ngx_http_gzip_module 该ngx_http_gzip_module模块是一个使用"gzip"方法压缩响应的过滤器.这通常有助于将传输数据的大小减少一 ...
- shell脚本 screen管理
一.简介 源码地址 日期:2018/4/12 介绍:使用screen来启动程序,这个脚本可以管理screen 效果图: 二.使用 适用:centos6+ 语言:中文 注意:请先写一个脚本来启动java ...
- 让你用Markdown的方式来做PPT
也许你是以为代码高手,Markdown写作高手,但你是PPT高手吗? 你的成绩有没有被PPT高手抢走过呢? 不会作精美PPT是不是很头疼呢? 今天就给大家介绍了一款PPT制作利器:Slidev~ 说S ...
- 删除其他列Table.SelectColumns(Power Query 之 M 语言)
数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...
- 十年后回到百年前?(Excel技巧集团)
在单元格里输入日期,有时可以偷懒,比如明年的日期可以输入至少一位的年+横杠(或斜杠)+至少一位的月+横杠(或斜杠)+至少一位的日,也就是"21-1-1",单元格里就会自动显示&qu ...
- 【Azure Redis 缓存】Azure Cache for Redis 中如何快速查看慢指令情况(Slowlogs)
问题描述 当 Azure Redis 服务器负载过高的情况下,使用时就会遇见连接超时,命令超时,IO Socket超时等异常.为了能定位是那些因素引起的,可以参考微软官方文档( 管理 Azure Ca ...