当前位置:首页 > 奇闻趣事

面向对象方法 面向对象—多态

面向对象三大特征:

继承、封装、多态

多态(polymorphism)

多态是OOP中的一个重要特性,主要用于实现动态绑定。换句话说,程序的最终状态只在执行过程中确定,而不是在编译过程中。这可以提高系统对于大规模系统的灵活性和可扩展性。

多态允许我们使用一个对象的一些方法,而不关注它的具体类型,从而实现更灵活的编程,提高系统的可扩展性。

为什么需要多态?

多态性是指允许不同种类的对象对同一条消息做出不同的响应。

如何在java中实现多态性?使用多态有什么好处?

有两种类型的参考变量:

编译时类型(模糊地说,通常是父类)

由申报时的类型决定。

运行时类型(运行时,哪个子类是哪个子类)

是由实际对应的对象类型决定的。通过动态绑定调用此对象的方法。动态绑定会让我们的编程更加灵活,但是会降低程序的运行速度。这也是JAVA比C++/C慢的主要原因之一。

多态性:如果编译时类型与运行时类型不一致,就会造成多态性。

方法绑定(方法绑定)

在执行调用方法时,系统可以根据相关信息在内存地址中执行代表该方法的代码。分为静态绑定和动态绑定。

静态绑定:

编译时完成可以提高代码执行速度。

动态绑定:

对象调用的方法采用动态绑定机制。虽然这使我们在编程上很灵活,但它降低了代码执行的速度。这是JAVA比C/C++慢的主要原因之一。在JAVA中,除了final类、final party和static方法之外的所有方法都是在运行时由JVM动态绑定的。

应该为成员变量和静态方法提供关于动态绑定的特殊课程:

http://blog.sina.com.cn/s/blog_600046120100wdza.html

http://blog.csdn.net/aaaaaaaa0705/article/details/6263213

http://www.doc88.com/p-389664843916.html

使用多态性的要点

1.多态是方法的多态,属性没有多态。

2.编写程序时,如果要调用运行时类型的方法,只能转换类型。否则,它将无法通过编译器的检查。但是,如果强制转换两个不相关的类,将会报告ClassCastException。比如,它本来是一只狗,但是我把它变成了一只猫。会报告这个异常。

3.多态性的存在有三个必要条件:继承、方法重写和指向子类对象的父类引用

对象转换(铸造)

为什么我需要铸造一个类型?

引用变量只能调用其编译类型的方法,而不能调用其运行类型的方法。这时候就需要铸型了!

一个父类的引用类型变量可以“指向”其子类的对象。一个父类的引用不可以访问其子类对象新增加的成员(属性和方法)。可以使用 引用 变量 instanceof 类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting)课堂代码

package cn.bjsxt.oop .多态;

公共级动物{

String str

public void voice(){

System.out.println("普通动物的叫声!");

}

}

猫类延伸动物{

public void voice(){

System.out.println("喵喵");

}

public void CaptMouse(){

System.out.println("抓老鼠");

}

}

狗类延伸动物{

public void voice(){

system . out . println(" Wang Wang ");

}

public void seeDoor(){

System.out.println("看门人!");

}

}

虎类延伸动物{

public void voice(){

System.out.println("哇哇");

}

}

猪类延伸动物{

public void voice(){

system . out . println(" hem ");

}

}

package cn.bjsxt.oop .多态;

公共类测试{

公共静态无效测试动物声音(动物c){

c . voice();

if(Cat的c实例){

((Cat) c)。catch Mouse();

}

}

/*

public static void testAnimalVoice(Dog c){

c . voice();

}

public static void testAnimalVoice(Pig c){

c . voice();

}*/

//贾维克·Test.java

// java测试

公共静态void main(String[] args) {

动物a =新猫();

Cat a2 =(Cat)a;

testAnimalVoice(a);

//a2 . catch Mouse();

//动物b =新狗();

//Animal c = new Tiger();

//testAnimalVoice(b);

//testAnimalVoice(c);

}

}

1.《面向对象方法 面向对象—多态》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《面向对象方法 面向对象—多态》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guonei/788435.html

上一篇

雍和宫 别再排队去雍和宫烧香了,那里曾是喇嘛的“妓院”

下一篇

伊泰普水电站 世界第二大水电站,伊泰普水电站

车窗起雾怎么办 车窗起雾怎么办,很多老司机都用错了方法,这才是经济实用的办法

  • 车窗起雾怎么办 车窗起雾怎么办,很多老司机都用错了方法,这才是经济实用的办法
  • 车窗起雾怎么办 车窗起雾怎么办,很多老司机都用错了方法,这才是经济实用的办法
  • 车窗起雾怎么办 车窗起雾怎么办,很多老司机都用错了方法,这才是经济实用的办法
高三数学公式必背 高考数学重要公式记不住?别着急,不妨试试这些记忆方法

高三数学公式必背 高考数学重要公式记不住?别着急,不妨试试这些记忆方法

学习一直是一场噩梦,复杂的公式真的很难记住,但是别担心,边肖带来了一些方便的方法来记住,让我们来看看!1、口头记忆高中数学,有些方法如果能编成顺口溜或者歌曲,可以帮助记忆。例如,根据一维二次不等式AX2+BX+C > 0和AX2+BX+C 即两个一阶因子的乘积大于0...

小尾寒羊养殖技术 养羊的饲养方法 繁殖小尾寒羊的饲养方法

小尾寒羊养殖技术 养羊的饲养方法 繁殖小尾寒羊的饲养方法

小尾寒羊的突出特点是繁殖率高、常年发情、繁殖周期短、多羔。在饲养管理中,利用这些特性提高繁殖力是获得经济效益的关键。影响小尾寒羊繁殖力的因素很多。在生产实践中,要抓住影响因素,采取相应措施,提高其繁殖力,获得更大的产量。 1.影响小尾寒羊繁殖力的因素 遗传。小尾寒羊...

芒果种子盆栽种植方法 吃剩的“芒果核”别扔,丢进花盆里,比发财树还漂亮

  • 芒果种子盆栽种植方法 吃剩的“芒果核”别扔,丢进花盆里,比发财树还漂亮
  • 芒果种子盆栽种植方法 吃剩的“芒果核”别扔,丢进花盆里,比发财树还漂亮
  • 芒果种子盆栽种植方法 吃剩的“芒果核”别扔,丢进花盆里,比发财树还漂亮

汽车玻璃水制作方法 汽车玻璃水用完了自己可以加吗?来听听老司机怎么说吧

  • 汽车玻璃水制作方法 汽车玻璃水用完了自己可以加吗?来听听老司机怎么说吧
  • 汽车玻璃水制作方法 汽车玻璃水用完了自己可以加吗?来听听老司机怎么说吧
  • 汽车玻璃水制作方法 汽车玻璃水用完了自己可以加吗?来听听老司机怎么说吧
痔疮止疼小妙招 痔疮疼痛难忍怎么快速缓解?赶紧看看,这种方法太实用了!

痔疮止疼小妙招 痔疮疼痛难忍怎么快速缓解?赶紧看看,这种方法太实用了!

疼痛是痔疮的典型症状,当痔疮有疼痛时,往往会表现出剧烈而持久的疼痛,尤其是排便时。严重时,痔疮引起的疼痛可能会直接影响我们的行走,使人坐立不安。正是这样,有人用“痔疮不是病,它害死人”这句话来形容痔疮的疼痛症状。那么,痔疮的疼痛怎么才能快速缓解呢?痔疮疼痛的原因其实...

燃气管道检漏仪 【干货分享】燃气管道泄漏,常见五种检测方法

  • 燃气管道检漏仪 【干货分享】燃气管道泄漏,常见五种检测方法
  • 燃气管道检漏仪 【干货分享】燃气管道泄漏,常见五种检测方法
  • 燃气管道检漏仪 【干货分享】燃气管道泄漏,常见五种检测方法

皮肤晒伤发红怎么办 女生皮肤晒伤了怎么办通红疼痛,教你晒后修复方法

  • 皮肤晒伤发红怎么办 女生皮肤晒伤了怎么办通红疼痛,教你晒后修复方法
  • 皮肤晒伤发红怎么办 女生皮肤晒伤了怎么办通红疼痛,教你晒后修复方法
  • 皮肤晒伤发红怎么办 女生皮肤晒伤了怎么办通红疼痛,教你晒后修复方法