zoukankan      html  css  js  c++  java
  • java中的多态

      首先感谢马士兵老师,因为看了他的视频我对java有了初步的了解。

      下面谈一下我对java中多态的认识,多态是面向对象的一个重要特性。了解多态就要先理解什么是面向对象和继承。面向对象即将现实世界的物抽象成对象,现实世界中的关系抽象成类、继承。类就是将现实中的有相同的特性的一类事物抽象成一个类,它就有解决当前问题所具有属性和方法。如现实现实中的人,汽车都可以是一个类。继承是一个新类从现有类中派生出来,派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要,继承允许和鼓励类的重用。当用定义一个基类的指针时他可以用类指向基类和其派生类的对象。这样在就使得很多代码可以重用,如当有一个函数定义时传递的参数是动物类型的对象,那样他的派生类狗的对象一样可以作为参数传递。不过用基类的指针指向派生类的对象时,通过该指针只能访问基类原有的属性和方法。无法访问基类所特有的属性和方法。如果这样用基类指针指向派生类对象用无法访问派生的属性和方法,显然这样做就没有任何意义了。于是多多态的作用就显示出来了。多态又叫做动态绑定也就是说他是在为对象动态分配内存的时候体现出来的。当用new操作符为对象分配内存的时候,在该对象的内存中就会有一个指向该类的各个方法的指针。所以指针所指向的方法是由所new的对象的决定的。这里再说一点就是程序中的方法是放在内存的代码区的,而对象时放在堆区的,方法是由所有该类对象所共享的,所以需要一个指向各个方法的指针。这样在派生中将基类的方法重写,由于多态的原因在调用基类指针的方法是就会根据所指的具体对象而调用所指的对象的方法,也就是派生类中所重写的方法。有时候可以不用将基类的中的方法具体实现而是等派生类继承后再将它实现。这样就有了虚函数,在函数前加上abstract关键字定义的函数。有虚函数的类必须定义成虚基类,他不能够用类创建对象。但是现实生活中往往一个对象需要从多个类继承,这样java中就有了另一个机制就是接口,接口应该是虚基类的一个特例,在接口内所有属性默认是public  static final 类型的也必须是这个类型。所有的方法都是public abstract的也必须是public abstract的。接口的实现和继承一样可以用接口定义的变量来指向实现该接口的类所定义的对象。Java中的多态使代码可以更充分的重用。接着说一下接口,java通过接口实现多继承,一个类可以实现多个接口,每个接口的指针都可以指向这个实现了多个接口的类,然而当接口A指向子类对象时,通过A指针只能调用A接口中定义的方法,如果想调用接口B中定义的方法需要用B指向子类对象。同样父类指针指向子类对象时不能调用子类特有的方法,需要进行强制类型转换将该对象赋值给子类指针。

    本文章属于本人和博客园所有,如有转载请注明出自http://www.cnblogs.com/xucheng
  • 相关阅读:
    缓存架构设计细节二三事
    数据库软件架构设计些什么
    100亿数据1万属性数据架构设计
    这才是真正的表扩展方案
    啥,又要为表增加一列属性?
    究竟啥才是互联网架构“高可用”
    究竟啥才是互联网架构“高并发”
    Linux用过的命令
    Xshell远程连接工具
    oracle分组取第一条
  • 原文地址:https://www.cnblogs.com/xucheng/p/duotai.html
Copyright © 2011-2022 走看看