java 多态实例代码
多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。
多态性是对象多种表现形式的体现,比如:
在现实中,我们按下F1键这个动作:
如果当前在Flash界面下弹出的就是AS 3的帮助文档
如果当前在Word下弹出的就是Word帮助
在Windows下弹出的就是Windows帮助和支持
多态存在的三个必要条件
继承
重写
父类引用指向子类对象
Parent p = new Child();
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
例题
package Wangyi; class Base { public void method() { System.out.println("Base"); } } class Son extends Base { public void method() { System.out.println("Son"); } public void methodB() { System.out.println("SonB"); } } public class Test01 { public static void main(String[] args) { Base base = new Son(); base.method(); base.methodB(); } }
问这个程序的输出结果。(D)
A. Base SonB B. Son SonB C. Base Son SonB D.编译不通过 解释: Base base=new Son(); 是多态的表示形式。父类对象调用了子类创建了Son对象。 base调用的method()方法就是调用了子类重写的method()方法。 而此时base还是属于Base对象,base调用methodB()时Base对象里没有这个方法,所以编译不通过。 要想调用的话需要先通过SON son=(SON)base;强制转换,然后用son.methodB()调用。
总结
以上就是本文关于java 多态实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
相关推荐
-
谈谈对Java多态性的一点理解
面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承是为了重用父类代码.两个类若存在IS-A的关系就可以使用继承.,同时继承也为实现多态做了铺垫.那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开: 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底
-
浅谈Java中的重载,重写,多态,静态绑定、动态绑定
本文主要研究的是关于Java中重载,重写,多态,静态绑定.动态绑定的相关内容,具体如下. 重载,英文名是overload,是指在一个类中定义了一个以上具有相同名称的方法,这些方法的参数个数.参数类型和顺序不能相同.返回类型可以相同,也可以不同. public class TstaticOverload { static int height; TstaticOverload() { System.out.println ("Planting a seedling"); height =
-
关于Java三大特性之多态的总结
面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 1.定义: 多态:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式.(发送消息就是函数调用) 2.实现多态的技术称为:动态绑定(dynamicbinding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法. 3.作用:消除类型之间的耦合关系. 4.现实中,关于多态的例子不胜枚举.比方说按下F1
-
Java面向对象编程(封装/继承/多态)实例解析
本文主要介绍了面向对象的三大特征实例解析,下面看看具体内容. 封装 封装一个Teacher和Student类 package com.hz.test; public class Teacher { private String name; private String majorDirection; private String teachCourse; private int teachAge; public Teacher() { super(); } public Teacher(Stri
-
Java面向对象程序设计多态性示例
本文实例讲述了Java面向对象程序设计多态性.分享给大家供大家参考,具体如下: 多态:具有表现多种形态的能力的特征(同一个实现接口,使用不同的实例而执行不同的操作) 实现多态的优点:为了方便统一调用! 实现多态的三种方式! 1. 子类到父类的转换: 例: Dog dog=new Dog("欧欧","雪纳瑞"); dog.eat(); Pet pet=new Dog("欧欧","雪纳瑞");//子类到父类的转换 pet.eat(
-
通过实例分析java多态
这篇文章主要介绍了通过实例分析java多态,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先来看这样的一段代码,其中对于类的定义如下: class Parent{ public int myValue=100; public void printValue() { System.out.println("Parent.printValue(),myValue="+myValue); } } class Child extends P
-
详解java封装继承多态
面向对象编程(Object Oriented Programming)有三大特性:封装.继承.多态.在这里,和大家一起加深对三者的理解. 封装 封装可以拆开理解,装,是把数据和方法放进了类里:封,把装进去的数据和成员方法加上访问权限.对于外界,内部细节是透明的,暴露给外面的是它的访问方法. 继承 继承,是为了重用父类代码.两个类若具有is a的关系就可以用extends.另外,继承也为实现多态做了铺垫. 多态 程序中定义的引用变量(java有两大数据类型,内部数据类型和引用数据类型)所指向的具体
-
java对象类型转换和多态性(实例讲解)
对象类型转换 分为向上转型和向下转型(强制对象转型). 向上转型是子对象向父对象转型的过程,例如猫类转换为动物类:向下转型是强制转型实现的,是父对象强制转换为子对象. 这和基础数据类型的转换是类似的,byte在需要时会自动转换为int(向上转型),int可以强制转型为byte(向下转型). 对于对象转型来说, 向上转型后子对象独有的成员将不可访问 . 意思是,在需要一只动物时,可以把猫当作一只动物传递,因为猫继承自动物,猫具有动物的所有属性.但向上转型后,猫不再是猫,而是被当作动物看待,它自己独
-
java 多态实例代码
多态是同一个行为具有多个不同表现形式或形态的能力.多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现,比如: 在现实中,我们按下F1键这个动作: 如果当前在Flash界面下弹出的就是AS 3的帮助文档 如果当前在Word下弹出的就是Word帮助 在Windows下弹出的就是Windows帮助和支持 多态存在的三个必要条件 继承 重写 父类引用指向子类对象 Parent p = new Child(); 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有
-
java 二叉查找树实例代码
java 二叉查找树实例代码 1.左边<中间<右边 2.前序遍历 左中右 3.中序遍历 中左右 4.后序遍历 左右中 public class BinaryTree { // 二叉树的根节点 public TreeNode rootNode ; // 记录搜索深度 public int count; /** * 利用传入一个数组来建立二叉树 */ public BinaryTree(int[] data) { for (int i = 0; i < data. length; i++)
-
Java StackTraceElement实例代码
本文研究的主要是Java StackTraceElement的相关内容,具体介绍如下. StackTrace用栈的形式保存了方法的调用信息. 可用Thread.currentThread().getStackTrace()方法得到当前线程的StackTrace信息,该方法返回的是一个StackTraceElement数组. 线程中methodA调用了methodB,那么methodA先入栈methodB再入栈.数组的第一个元素保存的是栈顶元素,最后一个元素保存的栈底元素.正好与调用栈的顺序相反.
-
java匿名内部类实例代码详解
这篇文章主要介绍了java匿名内部类实例代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Person.java package insof; public class Person extends Object{ String name; static int age; public Person() { this.name = "tom"; System.out.println("执行的是构造方法");
-
Java之Spring注解配置bean实例代码解析
前面几篇均是使用xml配置bean,如果有上百个bean,这是不可想象的.故而,请使用注解配置bean !!! [1]注解类别 @Component : 基本注解, 标识了一个受 Spring(点击这里可以下载<Spring应用开发完全手册>) 管理的组件 @Repository : 标识持久层组件 @Service : 标识服务层(业务层)组件 @Controller : 标识表现层组件 Spring 能够从 classpath 下自动扫描, 侦测和实例化具有特定注解的组件. 对于扫描到的组
-
java 函数的重载和重写实例代码
在java中多态分为两种编译时多态(重载)和运行时多态(重写),编译时多态又叫前绑定,运行时多态又叫后绑定. 下面用一个例子说明: public class OverloadAndOverwrite { public static void main(String[] args) { A a1 = new A(); A a2 = new B(); B b = new B(); C c = new C(); D d = new D(); System.out.print("a1.print(a1)
-
Java多态用法与注意点实例分析
本文实例讲述了Java多态用法与注意点.分享给大家供大家参考,具体如下: 一 点睛 向上转型:或者称为向父类转型.父类的对象通过子类对象实例化,实际上就是对象的向上转型.向上转型不需要进行强制类型转换,但是向上转型会丢失精度. 向下转型:或者称为向子类转型.也就是说父类对象可以转换为子类对象,但是,此时必须进行强制类型转换. 向上转型时,父类对象所能看见的方法依然是本类之中定义的方法(即被子类覆盖的方法).如果子类扩充了一些新的方法,父类是看不见的. 二 父类对象找不到子类的扩充方法 1 代码
-
JAVA 多态操作----父类与子类转换问题实例分析
本文实例讲述了JAVA 多态操作----父类与子类转换问题.分享给大家供大家参考,具体如下: JAVA语言中, 对象变量是多态的 每个子类对象都算是父类对象(子类对象可以当作父类变量所引用) 那反过来可不可以呢? 答案是取决于父类变量引用的是谁 如果父类变量引用的是子类对象的实例, 可以通过强转被子类变量引用 如果父类变量引用的是父类对象的实例,则不能被为子类变量引用 上代码举例子(本篇一直用这两个类举例子,main测试不同): 一个Father类 package test; public cl
-
java多态的向上转型的概念及实例分析
1.说明 向上转型就是把一个子类引用给一个父类引用,也就是父类引用 引用了子类的对象,即父类 父类对象 = 子类实例. 此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,而不是父类的方法.但是调用的属性还是父类的属性. 2.实例 class Animal { public String name; public void eat() { System.out.println(this.name + " 正在吃"); } } class Cat extends Animal {
随机推荐
- ASP.NET 2.0页面框架的几处变化
- setup.exe microsoft.exe SP00LV.exe手动查杀
- VMware虚拟机下hadoop1.x的安装方法
- Java反射机制及Method.invoke详解
- JavaWeb中导出excel文件的简单方法
- 浅谈javascript 函数属性和方法
- 一些Python中的二维数组的操作方法
- C# 删除字符串中的中文(实例分享)
- 如何高效使用Python字典的方法详解
- jquery插件ajaxupload实现文件上传操作
- 同一页面多个商品倒计时JS 基于面向对象的javascript
- linux shell字符串内置的常用操作(获取长度、查找、替换)
- Linux下mysql5.6.33安装配置教程
- Laravel中任务调度console使用方法小结
- JavaScript事件学习小结(一)事件流
- Android编程之页面切换测试实例
- jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
- 浅谈addEventListener和attachEvent的区别
- 完美解决Jpush[获取sdk版本失败!]的问题
- 使用bootstrap插件实现模态框效果