【JAVASE_学习笔记】多态

在Eclipse中实现继承,多态,主要是实现move,Draw 还有Draw Rectangle,Triangle,pentagon 立即下载

【JAVASE_学习笔记】多态

多态指一个对象具备多种形态
多态的前提:
   1.必须存在继承或者实现关系
   2.父类引用类型变量指向了子类的对象或是接口的引用类型变量指向了接口实现类对象
   3.必须有方法重写
注意:
   1.多态情况下,子父类存在着同名的成员变量时,默认会访问父类的成员变量
   2.多态情况下,子父类存在同名的非静态方法时,默认是访问子类的成员方法
   3.多态情况下,子父类存在同名静态方法时,默认是访问父类的成员变量
   总结:多态情况下,子父类存在同名成员时,默认访问父类成员,只有存在非静态同名方法时,才访问子类成员
   4.多态情况下,不能访问子类特有成员
向上转型与向下转型:
  向上转型:父类引用类型变量指向子类的对象
  向下转型:将父类的引用强制转换为子类的引用,前提必须有父类的引用存在,向下转型必须依赖于向上转型。
多态的好处(特点):
  1)提高代码的维护性(由继承保证)
  2)提高代码的扩展性(由多态保证)
多态的弊端:
  不能访问子类的特有功能
多态的应用场景:
  1.多态用于形式参数类型时,可以接收更多类型参数
  形参为抽象类:抽象类多态

//形参为抽象类
public class Demo3 {
    public static void main(String[] args) {
        School s=new School();
        Student1 s1=new EnglishStudent();//用抽象类多态来进行实例化,非静态同名方法访问子类方法
        s.method(s1);
        //或者链式编程
        s.method(new EnglishStudent());
    }
}
abstract class Student1{
    public abstract void study();

}
class EnglishStudent extends Student1{

    public void study() {
        System.out.println("学习英语");
    }
}
class School{
    public void method(Student1 s){//形参运用抽象类多态
        s.study();
    }
}

  形参为接口:接口多态

//形参为接口
public class Demo4 {
    public static void main(String[] args) {
        BirdDemo bd=new BirdDemo();
        Swimming b=new Bird();//接口多态,非静态同名方法访问子类方法
        bd.method(b);
        //链式编程
        bd.method(new Bird());
    }
}
interface Swimming{
    public abstract void swimming();
}
class Bird implements Swimming{
    public void swimming(){
        System.out.println("一些鸟能入水");
    }
}
class BirdDemo{
    public void method (Swimming s){
        s.swimming();
    }
}

  2.多态用于返回值类型时,可以返回更多类型的参数
  返回值为抽象类:抽象类多态

// 抽象类多态
public class Demo1 {
    public static void main(String[] args) {
        Cat c=new Cat();
        c.method().eat();//猫吃鱼
    }
}
abstract class Animal{
    public abstract void eat();
}
class Cat extends Animal{
    public void eat(){
        System.out.println("猫吃鱼");
    }
    //运用匿名对象和抽象类多态
    public Animal method(){
        return new Cat();//返回抽象类的子实现类
    }
}

  返回值为接口:接口多态

//接口多态
public class Demo2 {
    public static void main(String[] args) {
        Student s =new Student();
        s.method().speakEnglish();  
    }
}
interface English{
    public abstract void speakEnglish();
}
class Student implements English{
    public void speakEnglish(){
        System.out.println("这是英语流利的学生");
    }
    //接口多态
    public English method(){
        return new Student();//返回接口的子实现类对象
    }
}

多态情况下如果需要调用到子类特有成员,需强制类型转换(向下转型)
  这是为了避免出现OOM异常
  严重:OutOfMemory 内存溢出
举例:

Animal a = new Fish();
Fish f =(Fish) a;

容易出现强制类型转换异常:ClassCastException
引用类型变量做强制类型转换之前一般都会使用instanceof先判断

instanceof关键字

判断一个对象是否属于指定的类型
使用前提:判断的对象与指定的类型必须存在继承或者实现关系
格式:对象 instanceof 类名
举例:

public class Demo1 {
    public static void main(String[] args) {
        Dog d=new Dog();
        System.out.println("狗属于动物类么"+(d instanceof Animal));//狗属于动物么true
        //System.out.println("狗属于猫类么"+(d instanceof Cat));//报错
        Animal a=new Animal();
        System.out.println("动物是属于狗类么"+(a instanceof Dog));//动物是属于狗类么false
    }
}
class Animal{}
class Dog extends Animal{}
class Cat extends Animal{}
基于STM32的频率计(采用外部中断的方式) 前言 最近在了解电赛相关的东西,和指导老师交流一下,我决定先从最简单的频率计做起。 频率计是来检测信号的频率的,在做频率计的时候可以用信号发生器发出的信号来进行测试。 原理 这是最基础的方波,我们可以通过检测上升沿的方式来测量其频率。从周期的角度出发连续两个上升沿的时间就是这个方波的周期,那这个周期分之一就是这个方波的频率了。 在思考了一段时间~~(我是萌新。。)~~ 我觉得有两个方法可以实现,第一个是采用stm32定时器的输入捕获功能,第二个就是用外部中断来实现这个功能。正如标题,我这次采用外部中断的方 阅读详情

相关推荐

K-近邻算法: k-nearest neighbor classification (kNN) 详细介绍

@创建于:2020.04.09 @修改于:2020.04.09,2024.06.22 文章目录1、kNN介绍2、k近邻法的三要素详解2.1 距离度量2.2 k值的选择2.3 分类决策规则3、k近邻法的实现:kd树4、Python实现过程5、优缺点6、常见问题 1、kNN介绍 kNN是一个基本而简单的分类算法,作为监督学习,那么KNN模型需要的是有标签的训练数据,对于新样本的类别由与新样本距离最近的k个训练样本点按照分类...

chenhepg的博客 9万+

Java中多态的理解

本文主要介绍Java中多态的一些特性和格式,后面附上一个实例和自己的理解。 多态 什么是多态 概念:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。(可以理解为对象的多种特性) 多态存在的三个必要条件 1.要有继承关系的存在(实现接口也是一种继承关系) 2.要有方法的重写 3.要有父类引用指向子类对象 向上转型和向下转型 1.对象的向上转型,其实就是...

平安 5426

基于opencv-ANN的水果识别模型训练

本文通过opencv-ann-mlp训练模型,实现对五种水果进行分类识别。本文详细介绍该项目的各个过程,包括数据准备、预处理、样本读取、训练数据集制作、训练标签制作、模型参数设置、模型训练,模型测试验证等,总结该过程需要注意的事项。

qq_15985873的博客 3974

详解Java中的多态

如何体现多态性 父类引用指向子类对象。 格式: 父类名称 对象名 = new 子类名称(); 或者 接口名称 对象名 = new 实现类名称(); 多态中的成员变量访问规则 看等号左边是谁,就优先用谁的变量,没有则向上找。 口诀:编译看左边,运行还看左边。 多态中的成员方法访问规则 看 new 的是谁,就优先用谁,没有则向上找。 口诀:编译看左边,运行看右边。 public class MultiMethod { public static void main(String[] args) {

WWtianxiang的博客 211

淘宝链接跳转微信全攻略:自建合规中转页实现私域引流

在跨平台运营中,链接跳转是连接不同生态、实现流量引导的关键技术。其核心原理是通过服务器端或前端逻辑,将用户从一个平台的链接安全引导至目标页面,同时规避平台间的访问限制。这项技术的核心价值在于打破数据孤岛,实现跨平台用户沉淀与精细化运营,广泛应用于电商引流、私域流量构建和跨平台营销等场景。本文聚焦于**淘宝短链**与**企业微信**之间的跳转难题,提供了一套基于自建中转页面的完整工程解决方案,手把手教你如何通过合规的技术手段,将淘宝流量高效、安全地引导至微信生态,并实现数据追踪与客户分流。

weixin_34185512的博客 411

Silly Tavern(酒馆)AI 角色扮演下载与安装教程(Windows本地部署)

SillyTavern是一款开源AI角色扮演前端工具,支持沉浸式对话和长期角色互动。本文详细介绍了在Windows系统F盘部署SillyTavern的完整流程,包括下载项目、安装Node.js和Git环境、配置路径、启动服务等关键步骤,并特别说明非系统盘路径可能遇到的npm安装问题及解决方法。成功启动后,用户可通过浏览器访问本地地址使用该工具进行AI角色扮演互动。

Tan3851的博客 1万+

java SE 多态的详细讲解

java 多态

cjmyydsds的博客 185

微信小程序OCR身份证识别实战:从拍照到信息提取全流程解析

本文详细解析了微信小程序中OCR身份证识别的全流程实现,从环境配置、拍照上传到OCR核心识别及安全优化。通过微信开发者工具和OCR插件,开发者可快速构建高效的身份信息采集系统,提升用户体验和数据安全性。重点介绍了图像处理、加密传输及混合云架构等企业级解决方案。

j0k1l2m3n的博客 458

Java基础5:继承、方法重写和多态

public class 父类 {public class 子类 extends 父类 {子类中:可以增加变量、增加方法或覆盖父类的方法。

weixin_48029567的博客 1028

基于Pixi.js的Live2D看板娘离线加载实战指南

本文详细介绍了基于Pixi.js实现Live2D看板娘离线加载的完整方案,涵盖环境搭建、模型加载、交互功能实现及常见问题解决。通过Pixi.js的硬件加速优势,开发者可在Web和Electron项目中无缝集成离线运行的Live2D模型,提升用户体验并避免网络依赖问题。

weixin_29001423的博客 343

基于YOLOv5s的RK3588多线程部署16FPS暴涨到120FPS 轻量化深度学习部署实战教程(包括性能优化与加速)37

本文介绍了如何在RK3588平台上利用线程池优化YOLOv5模型的推理性能。RK3588内置3个NPU核心,支持多核并行处理。作者设计了一个线程池架构:1个线程负责数据读取,10个线程处理NPU运算,1个线程输出结果。该架构包含任务队列、线程管理和工作线程三个核心组件,通过合理设置线程数、任务队列大小等参数确保性能稳定。文章提供了详细的C++实现代码,包括线程池初始化、任务提交、结果获取等功能模块,并讨论了多线程同步和内存管理的关键技术要点。该方案可显著提升深度学习模型在嵌入式设备上的部署效率。

FJN110的博客 9230

Java面向对象——多态

Eclipse中创建类时可快捷创建继承 关于Java语言当中的多态语法机制 /** * 1、Animal,Cat,Bird三者之间关系 * Cat继承Animal * Bird继承Animal * Cat和Bird之间没有继承关系 * * 2、面向对象三大特征:封装 继承 多态 * * 3、关于多态中设计到的几个概念: * *向上转型(...

weixin_62838185的博客 306

手把手教你学Simulink——基于通信协议与标准的场景实例:卫星通信中的网络安全协议(IPSec)仿真

随着卫星通信在国防、金融、应急指挥、能源管网等关键领域的广泛应用,其安全性已成为系统设计的核心要求。然而,卫星链路具有广播特性、长距离传输、地面站分布广等特点,极易遭受窃听、篡改、重放、中间人攻击等网络威胁。传统的“信任链路层安全”已不足以应对现代网络攻击。为此,国际标准组织(如IETF、ETSI、CCSDS)推荐在卫星通信中部署协议,实现端到端的数据机密性、完整性、身份认证和抗重放保护。本文将手把手教你如何在中构建一个符合标准的仿真系统,涵盖从明文传输到加密隧道的完整安全链路建模。本文完整实现了。

MHD0815的博客 149

JavaSE学习笔记:多态

多态概念与应用摘要

2503_90262217的博客 1914

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JavaSE学习笔记第二弹——对象和多态(下)

JavaSE学习笔记第二弹之数组、封装、继承、多态、抽象类、接口。

PleaSure乐事的博客 1126

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

JavaSE学习笔记——继承、方法重写、多态

Day 07面向对象特征之二:继承概念继承方法的重写 面向对象特征之二:继承 概念 为什么要有继承? 多个类中存在相同属性和行为时,将这些内容抽象到单独一个类中,多个类无需再定义这些属性和行为,只要继承那个类即可。 此处的多个类称为子类,单独的这个类称为父类(基类或超类)。 继承 类继承语法规则: class Subclass extends Superclass{ } 子类继承了父...

MCC 737

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JavaSE中设计模式单例、接口、多态的学习笔记

JavaSE中设计模式单例、接口、多态的学习笔记 这是我学习JavaSE 的第十天,以下是我的学习笔记,欢迎大家指正,一起学习。 作者:兰兴星 编辑:兰兴星 想学更多JavaSE方面的 知识,欢迎关注的我的微信公众号:星悟脑 上一期知识点回顾: 面向对象的三大特性: ​ 封装(属性私有化private,get set方法,命名规则) 提高代码的可读性 ​ 继承 原理(子类父类的关系 extends) 基类的中的方法,构造方法(要保证父类的属性被初始化,所以有默认的super()),重写(拥有同名

weixin_43222853的博客 192

javaSE学习笔记——第九天、多态、抽象类、接口

javaEE学习第九天 java知识 多态概述及其代码体现 A:多态(polymorphic)概述 事物存在多种形态 B:多态前提 a:要有继承关系。 b:要有方法重写。 c:要有父类引用指向子类对象。 代码演示: class Demo1_Polymorphic { public static void main(String[] args){ ...

影龙武的博客qq_43594119 412

javaSE学习笔记7 多态

多态:多态指的是方法具有多态,而类的属性不具备多态。多态——父类引用指向子类对象,而且子类要重写父类中的方法。 多态:java的引用变量有两种类型:一种是编译时的类型,一种是运行时的类型。编译时的类型由声明该变量时使用的类型决定,运行时的类型由赋给该变量的类型决定。如果编译时的类型和运行时的类型不一致,就会出现多态。 父类: public class Base { public in

921800467的专栏 496

JavaSE学习笔记_5:Java多态

Java多态   一、多态(面向对象的第三个特征) 1、多态—概念 多态:可以理解为事物存在的多种体现形式。 人:男人,女人 动物:猫,狗 猫 x=new 猫(); 动物 x=new 动物();//实体x既具备猫的类型也具备动物的类型。   多态的前提:必须是类与类之间有关系。要么继承,要么实现。 多态的体现:父类引用指向子类对象。父类引用也可以接收子类对象。 多态的好处:

java_cm66的博客 494

JAVASE学习笔记 初进面向对象-多态(多态的条件、意义,多态访问成员的特点,多态的弊端)

1.多态的引入 面向对象有三大特征:封装,继承与多态。多态是面向对象的三大特征之一,指的是在不同的时刻,所表现出的不同的状态。举个简单的例子来说,动物中的猫属于猫类型,具体在创建对象时,可以通过Cat cat =new Cat()的代码来进行实现。同时猫也属于动物类型,按照此种逻辑进行推算的话,可以使用父类的引用去接受子类的对象,具体的实现是:Animal an=new Cat(),这种现象就叫做多态。 下面对多态产生的条件作以介绍: 多态的前提 1.多态的前提是继承,没有继承,多态也就无从

qq_41537102的博客 443

JavaSE学习笔记_第九章_多态

Java SE 基础学习笔记

qq_44791542的博客 590

JAVASE学习笔记-12(多态)

多态

weixin_42776730的博客 377

JavaSE学习笔记——day15——封装,继承,多态

day15 1、封装 封装的定义 封装是把对象的所有组成部分组合在一起,封装使用访问控制符将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 封装的作用 适当的封装可以让代码更容易理解和维护,也加强了代码的安全性。 1.1软件包机制 1.2权限控制 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f3LuR2ba-1622966290510)(C:\Users\16070\AppData\Roaming\Typora\typora-user-images\image-20

weixin_46030783的博客 298

JavaSE学习笔记 - 多态、权限、内部类

父子类类型转换   向上转型(子类转换成父类,自动转型):创建子类对象,当做父类使用,在调用方法的时候优先去找子类中的属性和方法,如果子类中没有再去父类中去寻找。也就是说如果子类覆盖重写了父类的方法,当子类实例化给父类在调用方法的时候调用的子类中的方法。如果父类和子类有相同的属性,当子类实例化给父类在调用属性的时候调用是父类的属性。 父类指向子类的方法不能调用子类的特有方法,也不能调用子类的特有属性。   向下转型:将父类对象转换为子类对象。使用 instanceof 关键字来判断是否父类是否是某一个子类实

Sun 167

【JavaSE学习笔记】Java中的多态及其引出的Upcast和Downcast问题

JAVASE学习笔记:JAVA中的多态及其引出的Upcast和Downcast 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录JAVASE学习笔记:JAVA中的多态及其引出的Upcast和Downcast前言一、JAVA中的多态二、Upcast & Downcast总结 前言 提示:这里可以添加本文要记录的大概内容: 最新跟随康老师学习JAVASE,碰到了JAVA特性之一:多态,并且对多态引出的类型转换问题很迷茫,故在此记录一下。 提示:以下是本篇文章正文内容,下面

qq_43530796的博客 1312
上一篇: 【JAVASE_学习笔记】抽象类与接口
下一篇: 【c语言练习】2.0
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值