一、多态(对象的多种形态
1.引用的多态
父类的引用指向本类的对象
父类的引用指向子类的对象(引用多态)
(不允许子类对象指向父类)
2.方法多态
创建本类对象时调用的方法为本类的方法
创建子类对象时,调用的方法为子类重写的方法或继承的方法
**使用多态时,两个类一定要有继承关系
当子类拥有的方法父类没有时,指向子类的父类对象无法调用。

package com.sy;

public class Animal {
public void eat()
{
System.out.println("动物有吃的能力");
}
}
package com.sy;

public class Dog extends Animal {
public void eat()
{
System.out.println("狗屎吃肉的");
}
public void watchdoor()
{
System.out.println("狗具有看门的能力");
}
}
package com.sy;

public class initail {

    /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*Animal pro1=new Animal();
Animal pro2=new Dog();
Animal pro3=new Cat();
pro1.eat();
pro2.eat();
pro3.eat();*/ Dog dog=new Dog();
Animal animal=dog;//自动类型转换提升,向上类型转换
if(animal instanceof Dog)
{
Dog dog2=(Dog)animal;//向下类型转换
}
else{
System.out.println("无法进行类型转换 转换成dog类型");
} /*判断一个引用是否是某个类型或某个类型的子类型会返回一个bool值*/
if(animal instanceof Cat)
{
Cat cat =(Cat)animal;//编译时为Cat类,运行时实际开辟的内存是Dog类型的,运行时会报错
}
else{
System.out.println("无法进行类型转换 转换成cat类型");
}
}
}
package com.sy;

public class Cat extends Animal {

}

练习(描述运输工具)
汽车:在陆地上(陆地载客40人)
轮船:在海上(海上200人)
飞机:在天上(天空XXX人)
运输客人,各自的运输方式
创建五个以上生活当中的和交通工具,并同时查看他们的运输客人的方式

引用类型的转换
1.向上类型的转换(隐式/自动类型转换(子类强制转换成父类)),是小类型到达类型的转换(无风险)
2.向下类型的转换(强制类型转换),大类型到小类型的转换(有风险,可能发生数据溢出)
3.可以使用instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题

4.用于验证是否可以进行强制类型转换

if(animal instanceof Cat)
{
Cat cat =(Cat)animal;//编译时为Cat类,运行时实际开辟的内存是Dog类型的,运行时会报错
}

else{

System.out.println("无法进行类型转换 转换成cat类型");
}

package com.sy;
public class Trantool {
public void tran()
{
System.out.println("运输方式");
}
}
package com.sy;
public class tramain {
public static void main(String[] args) {
Trantool tran1=new Trantool();
Trantool tran2=new Car();
Trantool tran3=new Board();
Trantool tran4=new Plant();
tran1.tran();
tran2.tran();
tran3.tran();
tran4.tran();
} }
package com.sy;
public class Car extends Trantool {
public void tran()
{
System.out.println("小汽车的运输方式");
}
}


package com.sy;
public class Plant extends Trantool {
public void tran()
{
System.out.println("飞机的运输方式");
}
}

java_多态的更多相关文章

  1. ooday08 Java_多态_向下强制转型

    笔记: 多态: 表现: 同一个对象被造型为不同的类型时,有不同的功能 --对象的多态:我.你.水......------所有对象都是多态的(明天体会) 同一类型的引用指向不同的对象时,有不同的实现 - ...

  2. java_抽象类、接口、多态的使用

    抽象类 抽象类:包含抽象方法的类. 抽象方法 : 没有方法体的方法. 使用 abstract关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体. 格式为:修饰符 abstra ...

  3. Java中的多态

    1.多态:具有表现多种形态的能力的特征 父类: public abstract class Animal {public abstract void Say();} 子类: public class ...

  4. C# 工厂模式+虚方法(接口、抽象方法)实现多态

    面向对象语言的三大特征之一就是多态,听起来多态比较抽象,简而言之就是同一行为针对不同对象得到不同的结果,同一对象,在不同的环境下得到不同的状态. 实例说明: 业务需求:实现一个打开文件的控制台程序的d ...

  5. C#非常重要基础之多态

    前几天看了一位同志的博客,写的是关于他自己去支付宝面试的经历.过程大体是这样的:问答的时候,前面部分,作者都应答如流,说起自己经验如何之丰富,最后面试官问了作者一个问题:请简述多态的概念和作用.结果这 ...

  6. C++多态详解

    多态是面向对象的程序设计的关键技术.多态:调用同一个函数名,可以根据需要但实现不同的功能.多态体现在两个方面,我们以前学过的编译时的多态性(函数重载)和现在我们这一章将要学习的运行时的多态性(虚函数) ...

  7. 【那些年关于java多态应用】

    1.多态:具有表现多种形态的能力的特征 父类: public abstract class Animal { public abstract void Say();} 子类: public class ...

  8. JAVA多态

    多态是指当系统A访问系统B的服务时,系统B可以通过多种方式来提供服务,而这一切对系统A是透明的.比如动物园的饲养员能够给各种各样的动物喂食.下图显示了饲养员Feeder,食物Food和动物Animal ...

  9. C#多态“说来也说”——逻辑层BLL中的多态使用

    本文版权归博客园和作者吴双本人共同所有.欢迎转载,转载和爬虫请注明原文地址 http://www.cnblogs.com/tdws/p/5861842.html 昨天晚上,有个朋友说学了好久,依然没搞 ...

随机推荐

  1. 小程序 wx.getRecorderManager 录音 to 语音识别

    微信扫小程序码看调用效果(自然语言理解小助手) 欢迎转载,请保留原文链接:http://www.happycxz.com/m/?p=125 这次主要是把我的api更新了一下,支持微信小程序新的录音接口 ...

  2. 一:详解 HTTP 协议

    本篇文章篇幅比较长,先来个思维导图预览一下. 一张图带你看完本篇文章 一.概述 1.计算机网络体系结构分层 计算机网络体系结构分层 2.TCP/IP 通信传输流 利用 TCP/IP 协议族进行网络通信 ...

  3. c# 小小备忘录

    一.简述 备忘录,相信大家生活中都使用过,比如记笔记.手机备忘录等等,这些都是记录自己灵感时所想.定期内想做的事情,好像跑题了,说说我的备忘录吧,我的备忘录功能上也就是增删改查的操作,另加到时提醒.语 ...

  4. 重温CSS3

    基础不牢,地动山摇!没办法,只能重温"经典"! 1.CSS3边框:border-radius; box-shadow; border-image border-radius:r1, ...

  5. Mac下Kali虚拟机与宿主机共享文件夹

    宿主机: 1.创建文件夹.测试文件 ZhangSan-MacBook-Air:~ zhangsan$ mkdir kalishare && cd kalishare/ ZhangSan ...

  6. python基础教程——dict和set

    dict python内置字典:dict,全称dictionary,在其他语言中称为map,使用键值对存储. ex: d = {'xiaoli' : 95 , 'xiaoming' : 98 , 'x ...

  7. STM32F030如何正确配置IO口的复用功能

    本文所使用的单片机型号为STM32F030C8T6. 在030系列的单片机中,PA2引脚除了作为普通的IO引脚用作输入输出功能以外,还可以作为内部外设串口1,串口2,定时器15通道1这三个外设的功能引 ...

  8. 使用Gulp构建前端自动化方案

    前言 在刚入门前端的时候,我们并不清楚前端有工具可以帮我们自动化打包压缩文件,当时只关注能实现功能就可以了,也不太在意前端性能优化的问题,随着项目功能的复杂,项目也变得越来越大,页面的执行速度也开始变 ...

  9. [NOIP]玩具装箱

    题目:(非常经典的模拟赛题,适合动规入门的OIer) 简要分析:   动态规划,用一维数组 f[i] 表示从位置1 到 位置i 的最优花费 ,由于 f[i ] 以前的最优花费都是确定的,故只需要在 1 ...

  10. cocos2dx3.2移植android

    LOCAL_PATH := $(call my-dir)LOCAL_MYDIR = $(LOCAL_PATH)/../../Classesinclude $(CLEAR_VARS) $(call im ...