A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//父类
class Fu{
        方法1();
}
//子类1继承父类
class Zi1 extends Fu{
        方法1();//重写父类方法
        方法2();//子类1特有方法
}
//子类2继承父类
class Zi2 extends Fu{
        方法1();//重写父类方法
        方法2();//子类2特有方法
}
//工具类
class ArrayTools{
        方法1(Zi1  a1)//传入的是子类型1对象的形参
                {
                        a1.方法1();
                        a1.方法2();
                }

        方法2(Zi2  a2)//传入的是子类型2对象的形参
                {
                        a2.方法1();
                        a2.方法2();
                }

        方法3(Fu   a3)//传入的是父类型对象的形参(既然是父类就可以全部代表子类类型《就是泛型的意思》,可以传入继承本父类的所有子类对象).
                {
                        a3.方法1();//这里注意:父类只能代表本类方法和子类的同名方法,所以没有子类的方法2.前几天亲测写了不能通过编译.
                }
}
class ZhuHanShu{

        ArrayTools atl=new ArrayTools();
        Zi1 x1=new Zi1;
        Zi2 x2=new Zi2;
        atl.方法1(x1);//只能传入的是子类型1对象的形参(如果还有继承他的子类也可以).
        atl.方法2(x2);//只能传入的是子类型2对象的形参(如果还有继承他的子类也可以).
        atl.方法3(..);//以上x1.....x2都都可以
}
为什么工具类能够运行其他子父类中的方法:因为传入的是实参,也就是传入的对象已经实例化并分配了内存加载了类.class文件,
工具类内的方法内还有引用的方法称为方法嵌套,工具类只是起到打包其他类方法的作用,这样不管子类有成百上千的方法,我只要调用工具类里的一个方法就等于调用了子类成百上千的方法,
这样就可以使main()的代码更简洁,少些了成百上千行代码。

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马