java多态解释,一张图解释---Java多态

324072bb333100f5aafaecf30b18ca1c.png

1.向上转型:编译器自动进行,不需要声明

Snowboard s = new Snowboard ();

Object o = s; (相当于指向Snowboard的内部Object实例,所有类都继承于Object类)

①当o试图引用 Snowboard独有的方法时,是不会成功的

②当o引用被子类override过method时,调用的是该子类的method

2. 向下转型:强制类型转换,需要声明

① 先指向里面,可以随时向下转型指向外面

Object o = new Snowboard();

Snowboard s = (Snowboard) o ;

② 现在转型的父类引用必须是指向了子类对象,否则向下转型不成功

Object o = new object ();

Snowboard s = (Snowboard) o; //这样的向下转型是不成功的,因为已经o引用是指向Object类的实例的,并没有被子类继承。

3. 多态的三个用法:

.引用类型可以是实际对象类型的父类

Animal [] animals = new Animal [5];

animals [0] = new Dog();

animals [1] = new Cat();

animals [2] = new Wolf();

animals [3] = new Hippo();

animals [4] = new Lion();

2. 参数可以多态

class Ver {

public void giveShot(Animal a){

a.makeNoise();

}

}

class PetOwner {

public voi start(){

Vet v = new Vet();

Dog d = new Dog();

Hippo h = new Hippo();

v.giveShot(d);

v.giveShot(h);

}

}

3. 返回值多态:《第一行代码》P375

public class MyService extends Service {

private DownloadBinder mBinder = new DownloadBinder();

class DownloadBinder extends Binder {

public void startDownload() {

Log.d("MyService", "startDownload executed");

}

public int getProgress() {

Log.d("MyService", "getProgress executed");

return 0;

}

}

@Override //当活动与Service成功绑定时,会回调这个方法

public IBinder onBind(Intent intent) {

return mBinder;// binder extends Object implements IBinder, 继承关系:IBinder > Binder > DownloadBinder

}

}

===================================================================================

private ServiceConnection connection = new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) {

}

@Override

public void onServiceConnected(ComponentName name, IBinder service) { //Service返回的mbinder(实际是指向Ibinder)

downloadBinder = (MyService.DownloadBinder) service; //所以向下转型成downloadBinder。

downloadBinder.startDownload();

downloadBinder.getProgress();

}

};

4. 参考资料:

①http://www.cnblogs.com/mengdd/archive/2012/12/25/2832288.html

②Headfirst Java

一张图解释SQL Server集群、镜像、复制、日志传送

一张图解释SQL Server集群.镜像.复制.日志传送 本文版权归作者所有,未经作者同意不得转载.

两张图解读Java异常与断言

两张图解读Java异常与断言                                 --转载请注明出处:coder-pig 本节引言: 前天公布的"七张图解析Java多线程&quo ...

8张图理解Java

一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选.如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟. 1.字符串不变性 下面这张图展示了这段代码做 ...

【转】8张图理解Java

一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选.如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟. 1.字符串不变性 下面这张图展示了这段代码做 ...

[ImportNew]8张图理解Java

http://www.importnew.com/11725.html 1.字符串的不变性. 下面这张图展示了这段代码做了什么 String s = "abcd"; s = s.c ...

8张图理解Java(转)

一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选.如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟. 1.字符串不变性 下面这张图展示了这段代码做 ...

一张图解释Hadoop IPC

基于hadoop2.6.2.... 一张图Server启动,Client访问..... RPC是IPC的一种,IPC还有另外一种LPC,相关请看参考中的3 使用hadoop ipc步骤: 1.定义RP ...

一张图解释RxJava中的线程控制

如果调用链中包含多个subscribeOn和observeOn,会是什么情况? 这实际上是一个至关重要的问题,因为在任何情况下,我们都应该弄清楚我们写的每一行代码到底是运行在哪个线程上.这个问题绝对不 ...

随机推荐

node基础10:处理异常

1.处理异常 当发生异常时,如果不作处理,那么服务器会奔溃.由于node的异步调用的特性,所以不但要考虑主程序的异常,还有处理异步调用的异常. 代码如下: /** * server.js */ var ...

Java 理论与实践: 处理 InterruptedException

捕捉到它,然后怎么处理它? 很多 Java™ 语言方法,例如 Thread.sleep() 和 Object.wait(),都可以抛出InterruptedException.您不能忽略这个异常,因为 ...

NSDecimalNumber用于精度准确的计算

在处理金额计算时,往往会涉及到小数,由于Double类型不准确,无法做到产品的要求.为了保证金额计算的准确性,建议使用NSDecimalNumber. 1.创建对象(常用的方法) // mantiss ...

spring4+websocket+nginx详细配置

实现的版本jdk1.7.0_25, tomcat7.0.47.0, Tengine/2.1.1 (nginx/1.6.2), servlet3.0, spring4.2.2 使用maven导入版本3. ...

328. Odd Even Linked List——多利用fake_head

Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

Java多线程实现简单的售票程序

设计一个多线程程序如下:设计一个火车售票模拟程序.假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况 1.要求打印出每个售票点所卖出的票号 2.各售票点 ...

使用SBT编译Spark子项目

前言 最近为了解决Spark2.1的Bug,对Spark的源码做了不少修改,需要对修改的代码做编译测试,如果编译整个Spark项目快的话,也得半小时左右,所以基本上是改了哪个子项目就单独对那个项目编译 ...

Kubernetes因限制内存配置引发的错误

今天对一个pod进行内存资源调整后, 一直卡在ContainerCreating的状态, 执行describe命令查看该 Pod 详细信息后发现如下 . [root@master-01 ~]# kub ...

【JavaScript】学习中遇到的一些问题

一.JavaScript中没法直接比较两个object和array是否相等

python获取esxi的磁盘使用率信息

#!/usr/bin/python3 #coding:utf-8 #Author: ziming """ 只用于模拟开发功能测试 """ f ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值