永发信息网

帮我看下这个Java题怎么走的

答案:1  悬赏:20  手机版
解决时间 2021-05-14 23:52

class A{
public void fun1(){
System.out.println("A类对象");
}
public void fun2(){
this.fun1();
}
}
class B extends A{
public void fun1(){
System.out.println("B类中的实例");
}
public void fun3(){
System.out.println("B类中3的实例");
}
}
class C extends A{
public void fun1(){
System.out.println("C类中的实例");
}
public void fun4(){
System.out.println("C类中的4实例");
}
}
class DTest4{
public static void main(String args[]){
fun(new A());
fun(new B());
fun(new C());
}
public static void fun(A a){
a.fun2();
if(a instanceof B){
B b =(B)a;
b.fun3();
}
if(a instanceof C){
C c = (C)a;
c.fun4();
}
}
}

他是怎么运行的

最佳答案

fun(new A());
fun(new B());
fun(new C());


都是一次顺序调用fun方法,这个不用说了,下面说下fun方法中的执行情况


这个方法有一个参数,是A类类型(可以传给他子类类型);


下面写下这个fun方法的注释:


public static void fun(A a){
a.fun2();//调用fun2方法,因为不管是new A();new B();还是new C()都有fun2方法,B,C是继承A中的
if(a instanceof B){//判断传进来的参数a是否是B类的实例----new B()这样才是B类的实例;
B b =(B)a;//如果是B类的实例,强制类型转换;然后调用下一行中fun3方法,因为只有B类才有这个方法
b.fun3();
}
if(a instanceof C){//判断传进来的参数a是否是C类的实例----new C()这样才是C类的实例;
C c = (C)a;//如果是C类的实例,强制类型转换;然后调用下一行中fun4方法,因为只有C类才有这个方法
c.fun4();
}


我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
鱼星草的药用
DNF就是正在登陆服务器,进去不什么原因
儿童宋词三百首苏轼,求苏轼最有名的诗词10首.
汝阳县福建正宗千里香馄饨王(文化路)地址是什
我家手提电脑玩梦幻诛仙,为什么画面会这样?
兰州离菏泽多远
谁喜欢李延年???
世界最著名咖啡?
淇县农机水利排灌站在什么地方啊,我要过去处
与桶装水厂家合作的细节问题
代办加拿大签证多少钱,加拿大旅游签证费多少
nokia7610是市场报价
什么产品去疤痕好
一九八四年农历七月十四日是阳历几月几日?
BBOM】又代表什么意思
推荐资讯
招聘标语怎么写吸引人,怎么写企业招聘的话语
热血物语 去哪儿下载or玩 ????
武林外传什么职业最强
一道题快快快!
连云港市精达计量泵有限公司在哪里啊,我有事
无聊该怎么办!
皇粮国税取消属于经济范畴还是政治范畴
现代幸福的指标是什么?
天下贰云麓、魍魉、奕剑都怎么加点
济源市涂涂鸭地址在哪里啊
5个月婴儿因为天冷脸被冻裂了,请问有什么好
哪些上市公司经营空调
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?