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