请问java是如何表现多态性的,困惑中 如题:请指教,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://community.csdn.net/Expert/topic/4897/4897082.xml?temp=.3852808关于继承和多态,看看这个帖子... 对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或服务在一般类及其各个特殊类中具有不同的语义。例如:"几何图形"的"绘图"方法,"椭圆"和"多边形"都是"几何图"的子类,其"绘图"方法功能不同。在java语言中,多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。 1) 编译时多态 在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。 2) 运行时多态 由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。 重写方法的调用原则:java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。 在下面例中,父类对象a引用的是子类的实例,所以,java运行时调用子类B的callme方法。import java.io.*; class A{ void callme( ) { System.out.println("Inside A's callme()method"); } } class B extends A{ void callme( ) { System.out.println("Inside B's callme() Method"); } } public class Dispatch{ public static void main(String args[]) { A a=new B(); a.callme( ); } } 方法重写时应遵循的原则: 1)改写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。 2)改写后的方法不能比重写的方法产生更多的例外。 sql多表查询的问题 htmlparser问题 急!!!如何判断eclipse是否安装了jseclipse? j2se学完了学什么? class如何防止反编译? 初学者提问 show()过时了怎么办? 请教一下,我是新手 安装java时遇到的问题 请问http://china-programer.myrice.com为什么进不进去? 汉字转成UNICODE码有什么用??? 哪里能找到一个功能较全的表格组件(至少能合并单元格),网上找到的都要不菲的费用
在java语言中,多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。 1) 编译时多态
在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。 2) 运行时多态
由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。 重写方法的调用原则:java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。 在下面例中,父类对象a引用的是子类的实例,所以,java运行时调用子类B的callme方法。
import java.io.*;
class A{
void callme( ) {
System.out.println("Inside A's callme()method");
}
}
class B extends A{
void callme( ) {
System.out.println("Inside B's callme() Method");
}
}
public class Dispatch{
public static void main(String args[]) {
A a=new B();
a.callme( );
}
} 方法重写时应遵循的原则:
1)改写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。
2)改写后的方法不能比重写的方法产生更多的例外。