一、多态(对象的多种形态
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. mac中利用brew实现多版本php共存以及任意切换

    1.安装brew 参考链接:https://brew.sh/index_zh-cn.html 2.安装php56 brew install homebrew/php/php56 3.配置php56 因 ...

  2. C#中获取当前系统中安装的所有字体及预定义颜色

    需要引用命名空间using System.Drawing.Text;.... //获取系统字体:InstalledFontCollection fc = new InstalledFontCollec ...

  3. [转载] Linux内存管理之mmap详解

    转载自http://blog.chinaunix.net/uid-26669729-id-3077015.html 一. mmap系统调用 1. mmap系统调用 mmap将一个文件或者其它对象映射进 ...

  4. smartClient 1--框架介绍

    一.是什么(以下简称SC)     smartClient 是一个基于web技术的开发框架,主要包括: 一个无需安装的 Ajax/HTML5 客户端引擎 UI组件和服务(采用富客户端RIA)--- 提 ...

  5. hotspot虚拟机的调试

    3这篇文章,怎么说呢.是踩了很多坑得出来了,也是在自己快要崩溃的时候得出来了的. 连续踩了差不多10来个小时的坑,还好是出来了. 这篇文章是调试虚拟机的,其实网上也能找到一些文章,但是每个人的环境不一 ...

  6. js中对节点属性的操作和对节点的操作

    常用的节点属性操作方法 1.setAttribute(name,value):给某个节点添加一个属性 2.getAttribute(name):获取某个节点属性的值. 3.removeAttribut ...

  7. VS2015远程调试

    原文链接 VS2015远程调试   在PayPal支付时,PayPal回调函数一直报错,本地没有外网IP,没有办法在本地调试,需要远程调试: 1.找到远程调试的文件夹: 找到对应的服务器的型号:64位 ...

  8. icheck如何修改样式大小

    icheck默认样式比较大,有需求调整checkbox大小. 1. 最简单的方法可用css3来实现,让整个模块层缩放,不兼容低版本浏览器. transform:scale(0.7,0.7)   2. ...

  9. CCF-201509-3-生成模板系统

    问题描述 试题编号: 201509-3 试题名称: 模板生成系统 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同 ...

  10. Java基础(三)-final关键字分析

    今天来谈谈final关键字的作用, 虽然有很多博文关于final进行了很深的研究,但还是要去记录下谈谈自己的见解加深下印象.下面直接进入主题: 一.final关键字的作用 1.被final修饰的类不能 ...