java类的多态性

学习java有好长一段时间了,但是有时候对面向对象好像还有一层膜隔着,今天索性捅破它,看看它的真面目。以下是我自己的理解以及查阅了资料所得,还是比较完整的,方便自己查看,同时也分享给大家。


面向对象有三大基本特征:封装、继承、多态

     一、封装性:就是尽可能的隐藏对象内部细节,对外形成一道边界,只保留有限的接口和方法与外界进行交互。封装的原则是使对象以外的部分不能随意的访问和操作对象的内部属性,从而避免了外界对对象内部属性的破坏。
方法:可以通过对类的成员设置一定的访问权限,实现类中成员的信息隐藏。如private,default,protected、public等限定符。
二、继承性:面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 
方法:继承概念的实现方式有三类:实现继承、接口继承和可视继承
注 :可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。  在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。
三、多态性:对象的多态性是指在父类中定义的属性或方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或方法在父类及其各个子类中具有不同的语义。例如:"几何图形"的"绘图"方法,"椭圆"和"多边形"都是"几何图"的子类,其"绘图"方法功能不同。
方法:Java的多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。编译时多态:在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。运行时多态:由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。
注:①多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
②实现多态的技术:动态连接或动态绑定(dynamic binding):对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法

补充:既然说了面向对象的基本特征,那就再说说和上述多态息息相关的重写(override)即覆盖和重载吧。
重载:让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。
重载Overloading是一个类中多态性的一种表现。重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。
重写:重写又叫覆盖,以下是要注意的要点。
1、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。
2、重写的方法的返回值必须和被重写的方法的返回一致;
3、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;
5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。
6、静态方法不能被重写为非静态的方法(会编译出错)。
    java接口中的方法访问修饰符不可以为protected,private,抽象类中抽象方法不能为private


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值