java多态性的代码 java多态的实现方式以及各自的特点
java中多态性什么意思?
java中多态性的意思是作为面向对象的程序设计语言最核心的特征,表示一个对象有着多重特征,可以在特定的情况下表现出不同的状态,从而对应着不同的属性和方法。
在长宁等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站建设、成都网站设计 网站设计制作按需求定制制作,公司网站建设,企业网站建设,成都品牌网站建设,全网整合营销推广,外贸网站建设,长宁网站建设费用合理。
1、就java而言,多态性就是允许将父对象设置成为一个或更多与自身子对象相等的技术,赋值之后父对象就可以根据当前赋值给自身子对象的特性以不同的方式运作。
2、据了解,java中多态性可以把不同的子类对象都当作父类来看,从而屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
扩展资料
java中多态性的注意事项
1、java中多态性使程序定义引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。
2、由此看来,java中多态性是在程序运行时才确定具体的类的,这样就不用修改源程序代码,当然也就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态。
参考资料:百度百科-多态
JAVA代码编写,多态
第一步:创建一个父类,如Animal(动物) 类,这个方法中只有方法的定义,没有实现。第二步:创建一个子类,如cat(猫)类,这个方法中实现父类中的所有方法,并进行重写。
第三步:创建一个子类,如dog(狗)类,这个方法中实现父类中的所有方法,并进行重写。
备注:多态实际上是一个父类有特定的属性,如动物有名称、年龄、所属科目,之后由子类去实现具体的,如猫,名称是猫,年龄是5岁,所属科目为猫科,然后狗同样有这些属性,只不过是值不同,这个就是一个多态的形式。子类可以有无限多,在步骤三后面添加即可。
Java运行时多态性的实现
运行时多态性是面向对象程序设计代码重用的一个最强大机制 动态性的概念也可以被说成 一个接口 多个方法 Java实现运行时多态性的基础是动态方法调度 它是一种在运行时而不是在编译期调用重载方法的机制 下面就继承和接口实现两方面谈谈java运行时多态性的实现
一 通过继承中超类对象引用变量引用子类对象来实现
举例说明
//定义超类superA
class superA
{
int i =
void fun()
{
System out println( This is superA )
}
}
//定义superA的子类subB
class subB extends superA
{
int m =
void fun()
{
System out println( This is subB )
}
}
//定义superA的子类subC
class subC extends superA
{
int n =
void fun()
{
System out println( This is subC )
}
}
class Test
{
public static void main(String[] args)
{
superA a
subB b = new subB()
subC c = new subC()
a=b
a fun() ( )
a=c
a fun() ( )
}
}
运行结果为
This is subB
This is subC
上述代码中subB和subC是超类superA的子类 我们在类Test中声明了 个引用变量a b c 通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用 也许有人会问 为什么( )和( )不输出 This is superA java 的这种机制遵循一个原则 当超类对象引用变量引用子类对象时 被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法 但是这个被调用的方法必须是在超类中定义过的 也就是说被子类覆盖的方法
所以 不要被上例中( )和( )所迷惑 虽然写成a fun() 但是由于( )中的a被b赋值 指向了子类subB的一个实例 因而( )所调用的fun()实际上是子类subB的成员方法fun() 它覆盖了超类superA的成员方法fun() 同样( )调用的是子类subC的成员方法fun()
另外 如果子类继承的超类是一个抽象类 虽然抽象类不能通过new操作符实例化 但是可以创建抽象类的对象引用指向子类对象 以实现运行时多态性 具体的实现方法同上例
不过 抽象类的子类必须覆盖实现超类中的所有的抽象方法 否则子类必须被abstract修饰符修饰 当然也就不能被实例化了
二 通过接口类型变量引用实现接口的类的对象来实现
接口的灵活性就在于 规定一个类必须做什么 而不管你如何做 我们可以定义一个接口类型的引用变量来引用实现接口的类的实例 当这个引用调用方法时 它会根据实际引用的类的实例来判断具体调用哪个方法 这和上述的超类对象引用访问子类对象的机制相似
举例说明
//定义接口InterA
interface InterA
{
void fun()
}
//实现接口InterA的类B
class B implements InterA
{
public void fun()
{
System out println( This is B )
}
}
//实现接口InterA的类C
class C implements InterA
{
public void fun()
{
System out println( This is C )
}
}
class Test
{
public static void main(String[] args)
{
InterA a
a= new B()
a fun()
a = new C()
a fun()
}
}
输出结果为
This is B
This is C
上例中类B和类C是实现接口InterA的两个类 分别实现了接口的方法fun() 通过将类B和类C的实例赋给接口引用a而实现了方法在运行时的动态绑定 充分利用了 一个接口 多个方法 展示了Java的动态多态性
需要注意的一点是 Java在利用接口变量调用其实现类的对象的方法时 该方法必须已经在接口中被声明 而且在接口的实现类中该实现方法的类型和参数必须与接口中所定义的精确匹配
lishixinzhi/Article/program/Java/hx/201311/26085
写一段能体现多态性的简单代码(java)
1. public class Animal
2. {
3. public void bite()
4. {
5.
6. }
7.
8.
9. public static void main(String... args)
10. {
11. Animal A = new Cat();
12. Animal B = new Dog();
13.
14. A.bite();
15. B.bite();
16. }
17.
18. }
19.
20.
21. class Cat extends Animal
22. {
23. public void bite()
24. {
25. System.out.println("MiaoMiao is bitting");
26. }
27. }
28.
29.
30. class Dog extends Animal
31. {
32. public void bite()
33. {
34. System.out.println("WangWang is bitting");
35. }
36. }
分享题目:java多态性的代码 java多态的实现方式以及各自的特点
文章起源:http://myzitong.com/article/dojjccs.html