当前位置: 首页 > news >正文

Android java基础_多态性

一.Android Java基础_多态性

向上转换:只能定义被子类覆写的方法,不能调用在子类中定义的方法。

class Father {private int money;	public int getMoney() {return money; }public void setMoney(int money) {this.money = money; }public void printInfo() {System.out.println("This is Father");}}class Son extends Father{public void printInfo() {System.out.println("This is son");}public void playGame() {System.out.println("playGame ...");}}class Daughter extends Father{public void printInfo() {System.out.println("This is daughter");}}public class Cnv {public static void main (String args[]) {Son son = new Son();Daughter daughter = new Daughter();Father f = son; /*  */f.printInfo();//f.playGame();f = daughter;f.printInfo();}
}

运行结果:

root@ubuntu:/home/topeet/guyilian# javac Cnv.java 
root@ubuntu:/home/topeet/guyilian# java Cnv
This is son
This is daughter

JAVA向下转换的例子,在进行对象的向下转换前,必须首先发生对象的向上转换.否则会编译不过

class Father {private int money;	public int getMoney() {return money; }public void setMoney(int money) {this.money = money; }public void printInfo() {System.out.println("This is Father");}}class Son extends Father{public void printInfo() {System.out.println("This is son");}public void playGame() {System.out.println("playGame ...");}}class Daughter extends Father{public void printInfo() {System.out.println("This is daughter");}}public class Cnv2 {public static void main (String args[]) {Father f = new Son();Son son = (Son)f;   /* Son son = new Son(); */}
}

运行结果:

root@ubuntu:/home/topeet/guyilian# javac Cnv2.java 
root@ubuntu:/home/topeet/guyilian# java Cnv2

看一下,下面的例子,假如有一千个类继承了father这个类,如果我们要打印他们的信息,那样我们岂不是要写1千个print函数,下面的第二个代码则通过向上转换这个技巧实现.

class Father {private int money;	public int getMoney() {return money; }public void setMoney(int money) {this.money = money; }public void printInfo() {System.out.println("This is Father");}}class Son extends Father{public void printInfo() {System.out.println("This is son");}public void playGame() {System.out.println("playGame ...");}}class Daughter extends Father{public void printInfo() {System.out.println("This is daughter");}}public class Cnv3 {public static void main (String args[]) {Father f = new Father();Son s = new Son();Daughter d = new Daughter();print(f);print(s);print(d);}public static void print(Father f) {f.printInfo();}public static void print(Son s) {s.printInfo();}public static void print(Daughter d) {d.printInfo();}}

运行结果:

root@ubuntu:/home/topeet/guyilian# javac Cnv3.java 
root@ubuntu:/home/topeet/guyilian# java Cnv3
This is Father
This is son
This is daughter

通过向上转换实现:

class Father {private int money;	public int getMoney() {return money; }public void setMoney(int money) {this.money = money; }public void printInfo() {System.out.println("This is Father");}}class Son extends Father{public void printInfo() {System.out.println("This is son");}public void playGame() {System.out.println("playGame ...");}}class Daughter extends Father{public void printInfo() {System.out.println("This is daughter");}}public class Cnv4 {public static void main (String args[]) {Father f = new Father();Son s = new Son();Daughter d = new Daughter();print(f);print(s);print(d);}public static void print(Father f) {f.printInfo();}}

运行结果:

root@ubuntu:/home/topeet/guyilian# javac Cnv4.java 
root@ubuntu:/home/topeet/guyilian# java Cnv4
This is Father
This is son
This is daughter

instanceof: 用来判断一个对象是不是某个类的实例

class Father {private int money;	public int getMoney() {return money; }public void setMoney(int money) {this.money = money; }public void printInfo() {System.out.println("This is Father");}public void drink() {System.out.println("drink ...");}}class Son extends Father{public void printInfo() {System.out.println("This is son");}public void playGame() {System.out.println("playGame ...");}}class Daughter extends Father{public void printInfo() {System.out.println("This is daughter");}public void dance() {System.out.println("dance ...");}}public class Cnv5 {public static void main (String args[]) {Father f = new Father();Son s = new Son();Daughter d = new Daughter();printAction(f);printAction(s);printAction(d);}public static void printAction(Father f) {if (f instanceof Son) {Son son = (Son)f;son.playGame();}else if (f instanceof Daughter) {Daughter d = (Daughter)f;d.dance();}else if (f instanceof Father) {f.drink();}}
}

运行结果:

root@ubuntu:/home/topeet/guyilian# javac Cnv5.java 
root@ubuntu:/home/topeet/guyilian# java Cnv5
drink ...
playGame ...
dance ...

相关文章:

Android java基础_多态性

一.Android Java基础_多态性 向上转换:只能定义被子类覆写的方法,不能调用在子类中定义的方法。 class Father {private int money; public int getMoney() {return money; }public void setMoney(int money) {this.money money; }public void printInfo() {Syst…...

面试前的准备

目录: 面试前的准备Java程序员校招与社招的区别校招与社招的区别:Java程序员投递简的正确方式投递简历时的误区简历投递时间Java程序员如何应对面试邀约Java程序员如何对公司做背调面试前的技术准备 面试前的准备 Java程序员校招与社招的区别 校招和社招…...

前端架构: 本地调试脚手架的2种方式

一、 调试简单的脚手架方式 假定脚手架名称是 xxx 1 )方式1 在xxx脚手架项目目录的上一级,执行 npm i -g xxx这时候,就可以本地调试脚手架,在前文中已经说明软链的作用参考:https://blog.csdn.net/Tyro_java/article…...

现阶段适用于 单一架构 还是 分布式架构 ?

单体架构: 优势:简单直接,易于理解和开发,适用于小型应用或刚刚开始的项目。劣势:扩展性受限,只能通过增加服务器的数量来提高处理能力;所有模块都部署在一个单独的服务器或容器中,…...

掌握Go并发:Go语言并发编程深度解析

🏷️个人主页:鼠鼠我捏,要死了捏的主页 🏷️系列专栏:Golang全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站,通俗易懂&…...

创建一个多进程服务器和多线程服务器

多进程服务器 #include<myhead.h> #define PORT 8888 //端口号 #define IP "192.168.10.10" //IP地址//定义信号处理函数&#xff0c;用于回收僵尸进程 void handler(int signo) {if(signo SIGCHLD){while(waitpid(-1, NULL, WNOHAN…...

相机图像质量研究(18)常见问题总结:CMOS期间对成像的影响--CFA

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…...

18.谈谈你对JSON的理解

JSON 是一种基于文本的轻量级的数据交换格式。它可以被任何的编程语言读取和作为数据格式来传递。 在项目开发中&#xff0c;使用 JSON 作为前后端数据交换的方式。在前端通过将一个符合 JSON 格式的数据结构序列化为 JSON 字符串&#xff0c;然后将它传递到后端&#xff0c;后…...

绝地求生:“觉醒之旅”通行证曝光,西游主题通行证及成长型武器即将上线

随着27赛季即将结束&#xff0c;有关28.1版本的皮肤及通行证内容也被爆料出来&#xff0c;本次通行证为工坊通行证&#xff0c;和去年四圣兽通行证为同一类型&#xff0c;将于2月7日更新至正式服 除了通行证获取工坊币还是可以开箱获取并兑换一些奖励 先看通行证 四个套装应该分…...

JS如何判断普通函数与异步(async)函数

这里可以先打印一下普通函数和异步&#xff08;async&#xff09;函数的结构&#xff0c;如下图 可以看出两者原型链&#xff0c;普通函数的原型链指向的是一个函数&#xff0c;异步&#xff08;async&#xff09;函数原型链指向的是一个AsyncFunction&#xff0c;这时就会想到…...

ndk-r20b 编译 boost 1.74。

ndk-r20b 编译 boost 1.74&#xff0c;这是 ndk-r20b 支持得最大 boost 版本&#xff0c;再大就没法编译支持了&#xff0c;本文介绍方法是完整编译&#xff0c;不需要完整编译请转移到github&#xff0c;boost for android 得开源项目。 1.74 boost &#xff0c;安卓上面得版本…...

尚硅谷最新Node.js 学习笔记(四)

目录 八、express框架 8.1、express介绍 8.2、express使用 express下载 express初体验 8.3、express路由 什么是路由&#xff1f; 路由的使用 获取请求参数 获取路由参数 8.4、express响应设置 8.5、express中间件 什么是中间件&#xff1f; 中间件的作用 中间件…...

掌握XGBoost:GPU 加速与性能优化

导言 XGBoost是一种强大的机器学习算法&#xff0c;但在处理大规模数据时&#xff0c;传统的CPU计算可能会变得缓慢。为了提高性能&#xff0c;XGBoost可以利用GPU进行加速。本教程将介绍如何在Python中使用XGBoost进行GPU加速以及性能优化的方法&#xff0c;并提供相应的代码…...

【2024年毕设系列】如何使用Anaconda和Pycharm

【2024年毕设系列】如何使用Anaconda和Pycharm 视频教程地址&#xff1a;【2024毕设系列】Anaconda和Pycharm如何使用_哔哩哔哩 Hi&#xff0c;各位好久不见&#xff0c;这里是肆十二&#xff0c;首先在这里给大伙拜年了。 诸位过完年之后估计又要开始为了大作业和毕业设计头疼…...

Blazor OIDC 单点登录授权实例5 - 独立SSR App (net8 webapp ) 端授权

目录: OpenID 与 OAuth2 基础知识Blazor wasm Google 登录Blazor wasm Gitee 码云登录Blazor OIDC 单点登录授权实例1-建立和配置IDS身份验证服务Blazor OIDC 单点登录授权实例2-登录信息组件wasmBlazor OIDC 单点登录授权实例3-服务端管理组件Blazor OIDC 单点登录授权实例4 …...

基于蒙特卡洛的电力系统可靠性分析matlab仿真,对比EDNS和LOLP

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 1.课题概述 电力系统可靠性是指电力系统按可接受的质量标准和所需数量不间断地向电力用户供应电力和电能量的能力的量度&#xff0c;包括充裕度和安全性两个方面。发电系统可靠性是指统一并网的全部发电机…...

Spring boot整合redisson报错

Spring boot整合redisson报错 org.redisson.client.RedisConnectionException: Unable to connect to Redis server: localhost/127.0.0.1:6379 原因 原因是计算机连接不上redis导致的 解决方案 重启redis 在redis文件目录下打开cmd 1.检查redis是否在运行 redis-cli p…...

【AIGC】Stable Diffusion的ControlNet插件

ControlNet 介绍 ControlNet 插件是 Stable Diffusion 中的一个重要组件&#xff0c;用于提供对模型的控制和调整。以下是 ControlNet 插件的主要特点和功能&#xff1a; 模型控制&#xff1a; ControlNet 允许用户对 Stable Diffusion 中的模型进行精细的控制和调整。用户可以…...

【蓝桥杯单片机入门记录】认识单片机

目录 单片机硬件平台 单片机的发展过程 单片机开发板 单片机基础知识 电平 数字电路中只有两种电平&#xff1a;高和低 二进制&#xff08;8421码&#xff09; 十六进制 二进制数的逻辑运算 “与” “或” “异或” 标准C与C51 如何学好单片机 端正学习的态度、培…...

Rust 数据结构与算法:3栈:用栈实现符号匹配

1、符号匹配 如&#xff1a; (56)(78)/(43)、{ { ( [ ] [ ])}}、(ab)(c*d)func() 等各类语句的符号匹配。 这里我们关注的不是数字而是括号&#xff0c;因为括号更改了操作优先级&#xff0c;限定了语言的语义&#xff0c;这是非常重要的。如果括号不完整&#xff0c;那么整个…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...