多态指的是同一方法可以根据发送对象的不同而采用多种不同的行为方式,一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。多态是方法的多态与属性无关

多态存在的条件:

  • 子类与父类之间有继承关系
  • 子类重写父类的方法
  • 父类引用指向子类对象

在实例化对象的时候方法的实际类型是确定的,但是方法的引用类型是不确定的,但是必须是与方法有继承关系

package Demo2;
public class person {           //定义person类public void print(){System.out.println("p1");      //创建输出方法}
}
class students extends person{      //定义students类继承person类public void print(){System.out.println("s1");   //创建输出方法}
}class main{                //定义主类用于调用public static void main(String[] args) {students s1=new students();      //实例化对象person s2=new students();       //父类引用指向子类Object s3=new students();        //父类引用指向子类s1.print();               //调用students 下的print方法s2.print();               //调用person下的print方法}
}

但是在实例化对象时Object为什么不会提示错误???

Object类是所有类的父类,在创建类的时候系统默认隐性继承了Object类的属性和方法,所以Object父类在引用students类的时候不会消失错误

多态条件一:子类与父类之间有继承关系

若方法之间没有继承关系则不能进行实例化,在执行person s2=new students();时方法则提示错误,这是将父类的引用指向到子类的方法中,但是之间没有继承关系,所有提示错误


例如:在对象类型写为String,String与students类并无继承关系,所以显示错误

多态条件二:子类重写父类的方法

多态条件三:父类引用指向子类对象

子类与父类之间关系

同一个方法只要子类没有重写父类的方法就调用父类的,若是子类重写了父类的方法则就调用子类重写后的方法。子类引用和父类引用指向的是不一样的

子类可以调用父类的属性和方法,但是父类可以引用指向子类但是不能调用子类独有的方法

方法的强制类型转换

回顾一下属性的强制类型转换

public class TestDemo {public static void main(String[] args) {char cha1='滨';     //定义char类型的字符“滨”int int1=(int)cha1;    //将cha1类型强制转换为int类型的System.out.println(int1);   //输出}
}

执行结果:28392

方法的强制类型转换

class main{public static void main(String[] args) {students s1=new students();person s2=new students();Object s3=new students();//s2.demo2;((students)s2).demo2();//将s2的person类强制转换为student类后调用}
}

执行结果:

students.demo2

从类型转换到低类型需要进行强制转换

Object是所有类的父类,person类是students类的父类,所有从person类咋转换到students类时需要用到强制转换。

java全栈系列之JavaSE-面向对象之多态038相关推荐

  1. java全栈系列之JavaSE--冒泡排序028

    冒泡排序是在一组数组中将相邻的两个元素进行比较,可以按由大到小或者由小到大的循序排列, 冒泡排序示意图: 每循环一次相邻的两个数进行大小比较,若由小到大的循序则大的数据在小的数据右侧 冒泡排序流程图 ...

  2. Java全栈系列笔记

    Java全栈系列笔记 全部文档.项目.源码: github:https://github.com/name365/Blog-Java 码云:https://gitee.com/yang365/Blog ...

  3. Java全栈学习day05(面向对象02)

    1.继承 继承的概念 实现代码的重用,子类继承父类的一切属性和方法(除了构造方法),父类的私有属性.方法不能直接使用,需要get和set. package com.test;public class ...

  4. java全栈系列之JavaSE-面向对象(方法的定义与调用)030

    java面向对象编程 面向对象&面向过程 前言: 之前的代码大多数都是属于面向过程的,在程序中有main()方法也叫主方法,程序会由上至下执行main()里面的内容.程序里的方法:例如编写一个 ...

  5. java全栈系列之JavaSE--数组的三种初始化方法及内存分析024

    java内存分析 堆中存放new出来的对象和数组,存放具体的值的变量存放在栈里面 在定义和创建数组的时候内存发生了什么? 当用户定义了一个数组,例如:int [ ] Array;只是定义了一个数组没有 ...

  6. java全栈系列之JavaSE-面向对象(方法重写)037

    子类在调用父类的私有方法中不能直接调用,但是可以通过get方法进行调用,修改属性的值可以通过set方法进行修改.而子类想要修改父类中的方法可以使用方法重写进行操作. 方法重写与之前的方法重载不同 回顾 ...

  7. java全栈系列之JavaSE-面向对象(继承详解)035

    类的继承 java三大特性之一的继承,指的是子类继承父类的属性和方法,java类中只有单继承没有多继承,比如说:一个父亲(父类)可以有多个儿子(子类),但是一个儿子(子类)只能有一个父亲(父类) 在类 ...

  8. java全栈系列之JavaSE-面向对象(封装详解)034

    封装数据的隐藏 通常,应禁止直接访问一个对象中的数据的实际表示,而应通过操作接口来访问,这种称为信息隐藏 封装的意义: 提高数据的安全性,保护数据 隐藏代码的实现细节 统一接口 系统的可维护性增加了 ...

  9. java全栈系列之JavaSE-面向对象(异常详解)043

    Exception可以被程序处理的异常 异常指的是程序在运行中出现了无法预料的状况,异常发生在程序运行期间.程序中可以选择捕获异常,也可以不处理使用默认的异常 算术异常 通常是由于算术计算错误导致的 ...

  10. java全栈系列之JavaSE-面向对象(类与对象的创建)032

    类是抽象的一种数据类型,它是对某一类事物整体的描述和定义,但是类不能代表某一具体的事物 如:动物类,有猫.狗.兔子.这些类都是通过描述定义某一类具体的事物应该具备的特点和行为 注意:一个程序中只应该有 ...

最新文章

  1. PHP Mysql类【转】
  2. 多项目加载顺序修改_React推出并发模式:可中断渲染、指定加载顺序、并行处理多状态...
  3. html去空格函数,trimleft_js trim函数 js去空格函数与正则
  4. Linux系统安装gcc/g++/rpcbind服务
  5. 异速联虚拟打印出来格式不对,如何处理
  6. xampp mysql使用教程_在Windows下XAMPP的安装及使用教程
  7. 【译学】数据分析手册学习09:举例说明 - 定量定性数据分析的程序和方法 Procedures and Methods
  8. 张正友相机标定全解析
  9. 数据分析5_美团外卖用户差评分析(附数据及Tableau文件)
  10. 解决鼠标滚轮每次滑动行数过多的办法
  11. 手把手教学:如何设计 SDK
  12. 2022浙江理工校赛 问题 I: Tournament Seeding
  13. 大专程序员质问马云:你说招聘从不看文凭,为何我投阿里石沉大海
  14. 如果要你向别人推荐电影,你最先想到的是那些呢?
  15. python新浪股票接口 2019_用python爬虫进行新浪腾讯股票数据采集
  16. matlab win32错误,尝试运行Matlab-Compiler-Runtime应用程序时Windows 7中出现SxS错误
  17. Chapter 1. OpenGL基础回顾 - Review of OpenGL Basics
  18. 第一次拼命的跟别人挤,找明星签名!!!
  19. 0626第一篇博客CSDN我就是那个学编程的女神。。经病!
  20. VR 科普-位置跟踪器,鼠标定位原理

热门文章

  1. Unity 中实现截图画笔橡皮擦工具
  2. 学术期刊《中华全科医学》
  3. matlab程序 地震 相干噪声_地震资料读写相干噪声的消除
  4. 知网复制太麻烦了?试试这个方法
  5. android 替换全局字体
  6. ZOJ 3981(Balloon Robot)
  7. 12c oracle 01109,Oracle 12c redo 丢失恢复
  8. 20个经典管理学定律
  9. 关于程序员的几个小段子
  10. MySQL - 04.数据控制语言(Data Control Language,DCL)