Java多态(利用向上向下转型和反射机理)

本文通过Java代码示例介绍了多态性和继承的概念。演示了如何在父类和子类中使用相同的方法名,并展示了子类如何重写父类的方法及调用子类特有方法的不同方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//基类: public class Polymorphism { public int book=6; public void base(){ System.out.println("父类的普通方法"); } public void test(){ System.out.println("父类的被覆盖的方法"); } } //子类 import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class SubClass extends Polymorphism { public String book="子类的book"; @Override public void test() { System.out.println("子类的覆盖父类的方法"); } public void sub(){ System.out.println("子类特有的独特方法"); } public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { Polymorphism bs=new Polymorphism(); System.out.println(bs.book); bs.base(); bs.test(); SubClass sc=new SubClass(); //通过引用变量来访问其包含的实例属性时,系统总是试图访问它编译时类所定义的属性,而不是它运行时类所定义的属性 System.out.println(sc.book); sc.test(); sc.base(); sc.sub(); Polymorphism py=new SubClass(); System.out.println(py.book); py.base(); py.test(); //利用向下转型可以访问子类特有方法 SubClass ss=(SubClass)py; ss.sub(); //利用反射也可以 Method[] cla=py.getClass().getMethods(); int i=1; for(Method mth:cla){ System.out.println(i+":"); System.out.println(mth.toString()+":"+mth.getName());//省略 if(mth.getName()=="sub"){ System.out.println("*********"); mth.invoke(py, null);//执行子类特有的方法体 break; } i++; } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值