关键词:
函数本身就具备多态性,某一种事物有不同的具体的体现。
体现:父类引用或者接口的引用指向了自己的子类对象。//Animal a = new Cat();
多态的好处:提高了程序的扩展性。
多态的弊端:当父类引用指向子类对象时,虽然提高了扩展性,但是只能访问父类中具备的方法,不可以访问子类中特有的方法。(前期不能使用后期产生的功能,即访问的局限性)
多态的前提:
1:必须要有关系,比如继承、或者实现。
2:通常会有覆盖操作。
多态的出现思想上也做着变化:以前是创建对象并指挥对象做事情。有了多态以后,我们可以找到对象的共性类型,直接操作共性类型做事情即可,这样可以指挥一批对象做事情,即通过操作父类或接口实现。
--------------------------------------------------------------
class 毕姥爷{
void 讲课(){
System.out.println("企业管理");
}
void 钓鱼(){
System.out.println("钓鱼");
}
}
class 毕老师 extends 毕姥爷{
void 讲课(){
System.out.println("JAVA");
}
void 看电影(){
System.out.println("看电影");
}
}
class {
public static void main(String[] args) {
毕姥爷 x = new 毕老师(); //毕老师对象被提升为了毕姥爷类型。
// x.讲课();
// x.看电影(); //错误.
毕老师 y = (毕老师)x; //将毕姥爷类型强制转换成毕老师类型。
y.看电影();//在多态中,自始自终都是子类对象在做着类型的变化。
}
}
---------------------------------------------------------------
如果想用子类对象的特有方法,如何判断对象是哪个具体的子类类型呢?
可以可以通过一个关键字 instanceof ;//判断对象是否实现了指定的接口或继承了指定的类
格式:<对象 instanceof 类型> ,判断一个对象是否所属于指定的类型。
Student instanceof Person = true;//student继承了person类
多态在子父类中的成员上的体现的特点:
1,成员变量:在多态中,子父类成员变量同名。
在编译时期:参考的是引用型变量所属的类中是否有调用的成员。(编译时不产生对象,只检查语法错误)
运行时期:也是参考引用型变量所属的类中是否有调用的成员。
简单一句话:无论编译和运行,成员变量参考的都是引用变量所属的类中的成员变量。
再说的更容易记忆一些:成员变量 --- 编译运行都看 = 左边。
2,成员函数。
编译时期:参考引用型变量所属的类中是否有调用的方法。
运行事情:参考的是对象所属的类中是否有调用的方法。
为什么是这样的呢?因为在子父类中,对于一模一样的成员函数,有一个特性:覆盖。
简单一句:成员函数,编译看引用型变量所属的类,运行看对象所属的类。
更简单:成员函数 --- 编译看 = 左边,运行看 = 右边。
3,静态函数。
编译时期:参考的是引用型变量所属的类中是否有调用的成员。
运行时期:也是参考引用型变量所属的类中是否有调用的成员。
为什么是这样的呢?因为静态方法,其实不所属于对象,而是所属于该方法所在的类。
调用静态的方法引用是哪个类的引用调用的就是哪个类中的静态方法。
简单说:静态函数 --- 编译运行都看 = 左边。
java面向对象编程三大特征-多态
Java面向对象编程三大特征-多态本文关键字:Java、面向对象、三大特征、多态多态是面向对象编程的三大特征之一,是面向对象思想的终极体现之一。在理解多态之前需要先掌握继承、重写、父类引用指向子类对象的相关概念,... 查看详情
重新梳理it知识之java-05面向对象
一、面向对象特征之三:多态性1.理解多态性一个事物的多种形态2.对象的多态性父类的引用指向子类的对象(或子类的对象赋给父类的引用)3.多态的使用:虚拟方法的调用有了对象的多态性以后,我们在编译期,只能调用父类... 查看详情
java面向对象三大特征之继承和多态(代码片段)
...特点3.方法重写4.Java中继承的注意事项继承代码案例二、多态1.多态概述2.多态中成员访问特点3.多态的好处和弊端4.多态中的转型多态代码案例总结前言 上一篇博客我们介绍了Java面向对象思想以及三大特征之一的封装。本文将... 查看详情
面向对象三大特征--多态
多态:一个对象具备多种形态。说白点就是:父类的引用类型变量指向子类的对象或者接口的引用类型变量指向了接口实现类的对象。多态的前提:必须存在集成或实现的关系。多态注意的细节: 1、多态情况下,... 查看详情
面向对象三大特征---封装继承多态
面向对象的三个基本特征是:封装、继承、多态。 &nbs 查看详情
面向对象三大特征之多态(代码片段)
面向对象的三大特征:封装、继承、多态。今天重点来看一下“多态”。封装 指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。将属性或方法进行封装,防止外部程序随机访问,加强代码的安全性。继承&n... 查看详情
5_面向对象-中之面向对象的特征三:多态性(代码片段)
1.多态性的理解:可以理解为一个事物的多种形态。2.何为多态性:对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)举例:Personp=newMan();Objectobj=newDate();3.多态性的使用:虚拟方法调用 >有了对象... 查看详情
java基础面向对象三个特征:多态(代码片段)
一、多态的概述 多态:一个对象拥有多种形态 eg:小明是一个学生(学生形态),同时也是一个人(人类形态) 多态的格式与使用:父类引用指向子类对象 格式:父类名称对象名=new子类名称() ... 查看详情
面向对象三大特征之继承,多态
...类可以派生出多个子类//override:重写//overload:重载,编程多态//parent::值名();放到那个需要调用父类的值名里面的(值),的子类里面!classRen{public$name;functionsay(){echo$th 查看详情
面向对象的特征
面向对象三大特征1.继承 2.多态 3.封装多态的好处允许不同类对同一消息做出响应,即同一消息可以根据发送对象的不同而采用不同的行为方式,具体表现为:可替换性:多态对已存在代码具有可替换性可扩充性:增... 查看详情
python入门-6面向对象编程:07面向对象三大特征(封装继承多态)-继承(代码片段)
...也支持面向对象编程的三大特性:继承、封装(隐藏)、多态。 封装(隐藏) 隐藏对象的属性和实现细节,只对外提供必要的方法。相当于将“细节封装起来”,只对外暴露“相关调用方法”。 ... 查看详情
java入门二十二面向对象三大特征之多态
面向对象的三大特征:继承、封装、多态,今天学的是多态,看完后有什么不懂的地方可以问小编,也可以评论里问,我们一起解决。多态(polymorphism)在编程语言和类型论中,多态指为不同数据类型的实体提供统一的接口。多... 查看详情
golang如何体现面向对象三大特征之多态?(代码片段)
多态基本介绍快速入门接口体现多态的两种形式多态参数多态数组基本介绍变量(实例)具有多种形态。面向对象的三大特征,在Go语言,多态特征是通过接口实现的。可以按照统一的接口来调用不同的实现。这... 查看详情
面向对象的三大特征:继承封装多态(代码片段)
面向对象:面向对象专注于由谁来解决这个过程,而调用者无需关注对象实现的细节编程特点:出现了一个个的类,从类中拿到对象,通过对象直接解决问题类:具有一系列相同属性(特征)和方法(行为)的个体的集合称为类 ... 查看详情
javase基础知识—面向对象(5.4面向对象三大特征:封装继承多态)
面向对象编程具有三大特征:封装继承多态一、封装1、好处狭义的封装:也就是属性的封装,避免了任意赋值的危险,提高了数据的安全性! ①隐藏一个类中不需要对外提供的实现细节 ②使用者只能通过实现定制好的... 查看详情
面向对象-多态与多态性
多态是指的多种形态;比如水的多种形态:水,冰多态性:在不考虑实例类型情况下使用实例,多态性分为静态多态性和动态多态性静态多态性:如任何类型都可以用运算符+进行运算多态:同一类事物的多种形态importabcclassAnimal... 查看详情
面向对象三大特征——封装多态接口
一、封装 1.封装的概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作与访问。混那个通过规定方法访问数据 2.封装的好处: 1).只能通过规定... 查看详情
面向对象的特征有哪些?
...:思维方式的特征,是三大特征:3大特征1.封装2.继承3.多态Java是第一个纯面向对象的语言,封装是基础继承是扩展多态是多样性的体现 08年以后,定义了4个特征1.封装: 1.类的定义就是装,组装:就在装东西, 查看详情