您的位置:首页 > 编程语言 > Java开发

Java 多态的理解(使用抽象类)

2014-09-19 15:57 471 查看
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
多态有两种表现形式:重载和覆盖

首先说重载(overload),是发生在同一类中。与什么父类子类、继承毫无关系。
标识一个函数除了函数名外,还有函数的参数(个数和类型)。也就是说,一个类中可以有两个或更多的函数,叫同一个名字而他们的参数不同。
他们之间毫无关系,是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可读性,仅此而已!

再说覆盖(override),是发生在子类中!也就是说必须有继承的情况下才有覆盖发生。

我们知道继承一个类,也就有了父类了全部方法,如果你感到哪个方法不爽,功能要变,那就把那个函数在子类中重新实现一遍。
这样再调用这个方法的时候,就是执行子类中的过程了。父类中的函数就被覆盖了。(当然,覆盖的时候函数名和参数要和父类中完全一样,不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫不关系)


对于父类中定义了一个方法专门是为了子类来进行覆盖,把它定义成抽象类型(abstract),子类继承父类时必须要重写这个方法,否则出现编译错误。对于不同的子类继承一个父类,不同子类针对自己的情况覆写父类中的方法,形成自己的方法。如下面这个例子:Shape 类中有area变量,和getArea方法,对于不同的三个子类Circle ,Square ,Star,求面积的方法不同,此时就要覆写父类中的getArea方法。

//抽象类
public abstract class Shape{
private double area;
public abstract double getArea();
}
public class Circle extends Shape{
double radius;
public Circle(double r){
radius = r;
}
public double getArea(){
area = 3.14*(radius*radius);
return area;
}
}
最后注意一点:抽象类可以不包含抽象方法,包含抽象方法的类一定是抽象类。

[/code]


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: