【Java】多态、抽象类和接口

    科技2022-07-11  96

    1、多态

    利用多态可以使程序具有良好的扩展性,并可以对所有类对象进行通用的处理方法。

    在这里可以举个实例:

    比如我们现在定义了一个四边形类,可以让它处理所有继承该类的对象,然后利用向上转型理念可以把每个继承四边形类的对象作为draw()方法参数,然后根据不同的图形对象绘制相应的图形。这样可以避免代码冗余问题,便于维护。

    程序员无需在所有的子类中执行相同功能的算法,只要可以实例化一个继承父类的子类对象即可调用相应的方法。只要去维护父类中的这个方法即可。

    2、抽象类

    Java语言中设置抽象类不可以实例化对象,图形类不同抽象出任何一种具体图形,但子类可以。、

    格式:

    public abstract class Test{ abstract void testAbstract();//定义抽象类方法 }

    abstract:抽象类的关键字;

    使用abstract关键字定义的类是抽象类,使用这个关键字定义的方法称为抽象方法。

    抽象方法没有方法体,这个方法本身没有任何意义,实际上抽象类除了被继承之外没有任何意义。

    另外Java中规定了类不能同时继承多个父类,面临这种问题,就出现了接口的概念。

    3、接口

    接口是抽象类的延伸,可以把接口看做成抽象类。

    接口中所有的方法都没有方法体。

    格式:

    public interface drawTest{ void draw();//接口内的方法,省略了abstract关键字 }

    public:权限修饰符。

    interface:定义接口关键字。

    drawTest:接口名称。

    一个类实现一个接口可以使用implements关键字。

    在接口中定义的任何字段都是static或final的。

    例:把多态技术与接口相结合。

    interface drawTest{ public void draw(); } class Test2 extends Test1 implements drawTest{ public void draw(){ System.out.println("平行四边形.draw()"); } } class Test4 extends Test1 implements drawTest{ public void draw(){ System.out.println("正方形.draw()"); } } public class Test1{ public void doAnyThing(){ } public static void main(String[] args){ drawTest[] d={new Test2(),new Test4()}; for(int i=0;i<d.length;i++){ d[i].draw(); } } }

    结果显示:

    平行四边形.draw() 正方形.draw()

    我们知道在Java中不允许多重继承,但使用接口就可以实现多重继承。因为一个类可以同时实现多个接口,这样可以使用implements关键字后并且使用逗号分隔开来。

    多重继承的语法:  

    class 类名 implements 接口1,接口2,...,接口n

     

    Processed: 0.015, SQL: 8