java中对于多态的理解

面向对象:

类:具体的对象抽象而来,可以抽象的表示一类具有相同特征和行为的对象

对象:是由类的实例化而来,对象是类的一个实例

java中关于多态的理解

打个比方 父亲person有行为这个方法,里面包括几个动作:吃饭,睡觉,走路 父亲有三个儿子,三个儿子都继承了父亲的行为方法,所以三个儿子都有吃饭,睡觉,走路这些动作,但是三个儿子又分别有自己的动作--大儿子A会弹吉他,二儿子B会唱歌,三儿子C会打鼓 ...

1.Person person = new A(); 不是父类对象指向子类引用而是父类引用指向子类对象

2.这个对象不能调用子类A特有的弹吉他方法--person.guitar(); X

3.如果仅是这么写程序,还不是多态,记住实现多态的三要素:继承 重写 父类引用指向子类对象

4.之后,如果你调用persion.eat(),此时在代码的编译阶段,persion调用的仍然是自己eat(),不是儿子的。而当程序运行时,就是java XXX, persion调用的却是儿子的eat()。这个动态的过程才是多态 。

Java中,父类的引用既可以指向父类的对象,也可以指向子类的对象。但子类的引用不能指向父类的对象。

引用类型也可以进行类型转换。

但转换的类型一定具有继承关系,即仅允许父子类之间进行转换。

如果尝试将毫无关联的两个类型进行转换,将会引发编译错误。可以使用instanceof来判断引用是否为指定的类型。

原文地址:https://www.cnblogs.com/hmyhh/p/9383030.html

时间: 07-26

java中对于多态的理解的相关文章

java中实现多态的机制是什么?

多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性.在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度:今天我们再次深入Java核心,一起学习Java中多态性的实现. “polymorphism(多态)”一词来自希腊语,意为“多种形式”.多数Java程序员把多态看作对象的一种能力,使其能调用正确的方法版本.尽管如此,这种面向实现的观点导致了多态的神奇功能,胜于仅仅把多态看成纯粹的概念. Java中的多态总是子类型

Java中线程同步的理解 - 其实应该叫做Java线程排队

Java中线程同步的理解 我们可以在计算机上运行各种计算机软件程序.每一个运行的程序可能包括多个独立运行的线程(Thread). 线程(Thread)是一份独立运行的程序,有自己专用的运行栈.线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等. 当多个线程同时读写同一份共享资源的时候,可能会引起冲突.这时候,我们需要引入线程"同步"机制,即各位线程之间要有个先来后到,不能一窝蜂挤上去抢作一团. 同步这个词是从英文synchronize(使同时发生)翻译过来的.我也不明白为什么

java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况

/* 样例1: class Parent{ int num = 3; } class Child extends Parent{ int num = 4; } */ /* 样例2: class Parent{ } class Child extends Parent{ int num = 4; } */ /* 样例3: class Parent{ void show(){ System.out.println("Parent Show!"); } } class Child exten

简述JDBC原理 + 在JAVA中异常是什么 + throws 与 throw 区别 + 简单解释以下JAVA中的多态

JDBC原理: 加:加载驱动 链:创建连接 预:创建预编译 执:执行SQL语句(查询需要处理结果级) 释:关闭链接: DBC中定义了一些接口:  1.驱动管理:  DriverManager  2.连接接口  Connection  DatabasemetaData  3.语句对象接口  Statement  PreparedStatement  CallableStatement  4.结果集接口  ResultSet  ResultSetMetaData JDBC只定义接口,具体实现由各个数

Java中实现多态的机制

一,多态定义: 多态就是指一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定. 一,实现多态的机制 java中实现多态的机制是依靠父类或接口的引用指向子类.从而实现了一个对象多种形态的特性.其中父类的引用是在程序运行时动态的指向具体的实例,调用该引用的方法时,不是根据引用变量的类型中定义的方法来运行,而是根据具体的实例的方法. 三,条件 Java实现多态有三个必要条件:继承.重写.向上转型 原文地址:https://www.cn

java中的接口深层理解

深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然.今天我们就一起来学习一下Java中的接口和抽象类.下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.

java中static关键字的理解(转载)

static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin05

Java中对Clone的理解

面试中经常遇到Clone的相关知识,今天总算是把Clone理解的比较透彻了!Java中Clone的概念大家应该都很熟悉了,它可以让我们很方便的“制造”出一个对象的副本来,下面来具体看看java中的Clone机制是如何工作的?     1. Clone和Copy     假设现在有一个User对象,User u1=new User(“U1001”,“Jason”,25),通常我们会有这样的赋值User u2=u1,这个时候只是简单了copy了一下reference,u2和u1都指向内存中同一个ob

对Java中字符串的进一步理解

字符串在程序开发中无处不在,也是用户交互所涉及到最频繁的数据类型,那么字符串不仅仅就是我们简单的理解的String str = "abc";一起来更加深入的看一下 在Java中,字符串被作为String类型的对象处理,和基本数据类型不同,字符串可以直接使用各种字符串对象的方法,而基本数据类型不行,String类位于java.lang包中,默认情况下该包会被自动的导入所有的应用程序 String对象创建后不能被更改,是不可变的,我们重新赋值并不是修改了对象所引用的内存空间的数据,而是创建