当前位置: 代码迷 >> 综合 >> 【Java】多态、抽象类和接口
  详细解决方案

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

热度:21   发布时间:2024-02-25 01:22:18.0

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