java中多态性的概念,java多态特点
目录
1.多态性的概念2。向上转化2.1概念2.2向上转化的常见形式3。重写3.1重写的注意事项是继承内容结束后的多态性,这也是面向对象程序的特点。
有一点需要注意:为了演示方便,我在一个java文件中定义了多个类,但实际上不建议这样做。
00-1010简单来说就是不同的对象执行相同的行为,但是它们产生不同的状态。
一个很简单的例子:学校某个班的学生参加同一个考试。考完试,不同的学生考试成绩不一样,有的不及格,有的徘徊在及格线上,有的得了高分。所以你是什么水平~ ( ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
实现多态性需要条件,具体条件如下:
1.肯定是在继承制度下,向上转化发生了。
2.子类应该覆盖父类的方法。
3.通过父类的引用调用重写方法
下面将详细介绍上面提到的一些新概念。
1.多态的概念
00-1010让我们对之前编写的类做一些修改:
class Plant { String name字符串源;弦属;public void func(){ system . out . println(父类方法);}} classtree扩展plant { public void trait(){ system . out . println(子类方法);}}向上转化就是创建一个子类对象,并将其作为父类。
具体操作如下:
植物树=新树();因为它被用作父类,tree此时不能调用子类的方法。
Java里有向下转换,但是不安全,我们就跳过。
00-1010上面的例子是第一个:直接赋值。
此外,还有两种形式。
作为该方法的参数。
作为方法的返回值
00-1010,即子类重写父类的方法。此方法不能是构造函数,也不能由private、final和static修饰。我们重写的是方法的内容,方法名、返回值、方法的参数都不能修改。
仍然是修改类:
class Plant { String name字符串源;弦属;public trait(){ system . out . println(父类方法);}}类树扩展了plant { @ override//注释,这个注释可以用于一些合法的验证。public void trail(){ system . out . println(子类方法);}}我们来看看向上转化后调用trait的结果是什么:
所谓的就是子类的方法,这也是重写的特点。
其实编译的时候调用的是父类的方法,但是重写的方法决定了在执行阶段调用哪个方法(即动态绑定),这也是重写和重载的本质区别。
00-1010 1.静态、最终、私有的修饰方法和构造方法不能重写。
2.子类方法的访问权限应该大于或等于父类。
3.JDK7以后,被覆盖的方法返回值的类型可以不同,但必须有父子关系,属于协变类型。
4.不要在构造函数中调用被重写的方法。
最后一点单独说明:假设父类的构造函数调用了被覆盖的方法,因为子类的构造函数会先调用父类的构造函数,所以在子类对象被完全构造之前,被覆盖的方法就已经被动态绑定了。在这种情况下,程序出现问题的概率会大大增加。
在学习了向上转换和重写之后,我基本知道了如何在Java中实现多态性:结合向上转换和重写来实现继承体系下的多态性。
多态内容结束,结束
这就是本文从简单到深入分析Java中多态性概念的全部内容。有关Java中多态性的更多信息,请搜索以前关于流行IT的文章或继续浏览下面的相关文章。我希望你将来能支持流行它!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。