关于面向对象的多态性问题 面向对象的三个特性:封装,继承,多态.封装和继承,我都明白.学了Java两个月了,就是搞不明白多态.我在看书的时候,看到多态性时,有一个例子说的是子类能隐式地转换为父类.是不是这就体现了多态性?还是子类对父类方法的重载,也体现了多态性?请高手指导,好让我明白面向对象的多态性是什么东东?~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哦,这个我明白.那例如这样子呢://子类转换成父类class A//A类{ public void func1()//A类的func1()方法 { System.out.println("A func1 is calling"); } public void func2()//A类的func2()方法 { func1(); }}class B extends A//B类,B类继承了A类{ public void func1()//重写父类A类的方法 { System.out.println("B func1 is calling"); } public void func3()//B类的func3()方法 { System.out.println("B func3 is calling"); }}class Exduotai1{ public static void main(String[] args) { B b=new B();//新建一个B类的对象实例并赋给引用句柄b A a=b;//把对象b的引用赋给A类型的句柄a,因为b原本为B类型的 //而B又为A的父类,这里系统先自动把子类自动转换为父类,再赋给A类型的引用句柄a,所以这里编译不会出错 callA(a);//直接访问本类中的callA方法,参数为A类类型的a System.out.println();//作用为换行 callA(new B());//也可以直接将B类类型的对象作为实参,调用到callA方法中的A为类型的a句柄,在这过程中,子类自动转换为父类了 } public static void callA(A a)//callA()方法,形参为A类类型的句柄a { a.func1(); a.func2(); }}/*这里编译没有错误,我们发现,编译器能够自动将类B的实例对象b直接赋给A类的引用类型变量,也就是子类能够自动转换成父类类型,另外,我们也看到了,程序可以直接创建一个类B的实例对象,传递给需要类A的实例对象参数的CallA方法,在参数传递的过程中发生了隐式自动类型转换,要把一个"男人"对象当作"人"去用,天经地义!*/在上面,那个参数调用中,B类的对象隐式地转换为A类类型了,那是不是也体现了面向对象的多态性?~ Jbutton如何去掉文字旁边的空白 求java awt实现旋转图片的代码 el 表达式不能用 请教下selffacotry的问题 菜鸟,有个想不明白的事情 URL newUrl = new URL(strUrl) 中的strUrl可以使用正则表达式么? 俄罗斯方块 谁有具有这样功能的类? 怎样复制一个ResultSet对象? win2000下如何用java程序设置环境变量,使它出现在Administrator的用户变量中? Swing程序中怎么划分系统层次及架构?总觉得程序都很乱,控制和显示都混在一起,不好维护,大家都怎么做的?? 头都晕了!Java骨干请进!
//子类转换成父类
class A//A类
{
public void func1()//A类的func1()方法
{
System.out.println("A func1 is calling");
}
public void func2()//A类的func2()方法
{
func1();
}
}
class B extends A//B类,B类继承了A类
{
public void func1()//重写父类A类的方法
{
System.out.println("B func1 is calling");
}
public void func3()//B类的func3()方法
{
System.out.println("B func3 is calling");
}
}
class Exduotai1
{
public static void main(String[] args)
{
B b=new B();//新建一个B类的对象实例并赋给引用句柄b
A a=b;//把对象b的引用赋给A类型的句柄a,因为b原本为B类型的
//而B又为A的父类,这里系统先自动把子类自动转换为父类,再赋给A类型的引用句柄a,所以这里编译不会出错
callA(a);//直接访问本类中的callA方法,参数为A类类型的a
System.out.println();//作用为换行
callA(new B());//也可以直接将B类类型的对象作为实参,调用到callA方法中的A为类型的a句柄,在这过程中,子类自动转换为父类了
}
public static void callA(A a)//callA()方法,形参为A类类型的句柄a
{
a.func1();
a.func2();
}
}
/*
这里编译没有错误,我们发现,编译器能够自动将类B的实例对象b直接赋给A类的引用类型变量,也就是子类能够自动转换
成父类类型,另外,我们也看到了,程序可以直接创建一个类B的实例对象,传递给需要类A的实例对象参数的CallA方法,
在参数传递的过程中发生了隐式自动类型转换,要把一个"男人"对象当作"人"去用,天经地义!
*/在上面,那个参数调用中,B类的对象隐式地转换为A类类型了,那是不是也体现了面向对象的多态性?~