多态

方法名相同,但实现的功能不同。重写和重载可以实现类的多态性,如子类重写父类方法。

例1、方法名相同,参数个数不同,参数类型不同。

        

public class Calculate {
final float PI=3.14f;
public float getArea(float r) {//一个参数
    float area=PI*r*r;//圆面积
    return area;
}
public float getArea(float l,float w) {//重载,两个参数
    float area=l*w;//矩形面积
    return area;
}
public void draw(int num) {//整型参数
    System.out.println("int:"+num);
}
public void draw(String shape) {//重载,字符型参数
    System.out.println("String");
}
    public static void main(String[] args) {
        Calculate s=new Calculate();
        float l=20;
        float w=30;
        float rectangle=s.getArea(l,w);//自动调用对应的方法
        System.out.println("矩形面积为:"+rectangle);
        float r=7;
        float circle=s.getArea(r);//自动调用对应的方法
        System.out.println("圆的面积为:"+circle);
        int num=7;
        s.draw(num);//自动调用对应的方法
        s.draw("三角形");//自动调用对应的方法
    }
}

 例2、几何图形都有共同属性(形状名称、面积)(抽象类),具体的长宽、半径等具体属性在具体类中定义。

          抽象类讲解,参考  https://www.ibm.com/developerworks/cn/java/l-javainterface-abstract/index.html

                     

//抽象类,不能实例化。实例化在具体的类(三角形、矩形)中
public abstract class Shape {
    public String getName() {
        return this.getClass().getSimpleName();//获取类名,形状
    }
    public abstract double getArea();
}
public class Circle extends Shape{
private double r;
public Circle(double r) {//圆的半径
    this.r=r;
}
public double getArea() {
    return Math.PI*Math.pow(r, 2);//面积公式
}
}
public class Rectangle extends Shape{
    private double l;
    private double w;
    public Rectangle(double l,double w) {//矩形的长宽
        this.l=l;
        this.w=w;
    }
    public double getArea() {//矩形的面积
        return l*w;
    }
}
public class Test {
    public static void main(String[] args) {
        Circle c=new Circle(1);//赋值半径
        System.out.println(c.getName());//名称
        System.out.println(c.getArea());//面积
        Rectangle rec=new Rectangle(1,1);//赋值长宽
        System.out.println(rec.getName());//名称
        System.out.println(rec.getArea());//面积
    }
}
原文地址:https://www.cnblogs.com/xixixing/p/8287120.html