java的多态

java的多态
/**/ /*  北大青鸟APTECH.
 *  版权所有
 
*/


/** */ /**
 * 这个程序演示动态多态性的用法.
 * 
@version 1.0 2005 年 5 月 20 日
 * 
@author Michael
 
*/

abstract   class  Shape  {

    
/** *//** 存储任何形状的长. */
    
protected double length;

    
/** *//** 存储任何形状的宽. */
    
protected double width;

    
/** *//** 
     * 构造方法.
     * 
@param num 传递至构造方法
     * 
@param num1 传递至构造方法
     
*/

    Shape(
final double num , final double num1) {

    
/** *//** 初始化变量. */
        length 
= num;
        width 
= num1;
    }


    
/** *//**
     * 抽象方法.
     * 
@return double 值
     
*/

    
abstract double area();
}


/** */ /**
 * 这个类重写父类的方法.
 * 
@version 1.0 2005 年 5 月 20 日
 * 
@author Michael
 
*/


class  Square  extends  Shape  {

    
/** *//** 构造方法.
     *
@param num 传递至构造方法的参数
     *
@param num1 传递至构造方法的参数
     
*/

    Square(
final double num, final double num1) {
        
super(num, num1);
    }


    
/** *//**
     * 计算正方形的面积.
     * @return传递给构造方法的 length
     
*/


    
double area() {
        System.out.println(
"正方形的面积为:" );
        
return length * width;
    }

}


/** */ /**
 * 这个类重写父类的方法.
 * 
@version 1.0 2005 年 5 月 20 日
 * 
@author Michael
 
*/


class  Triangle  extends  Shape  {

    
/** *//** 构造方法.
     *
@param num 传递至构造方法的参数
     *
@param num1 传递至构造方法的参数
     
*/

    Triangle(
final double num, final double num1) {
        
super(num, num1);
    }


    
/** *//**
     * 计算三角形的面积.
     *
@return double  传递给构造方法的length
     
*/


    
double area() {
        System.out.println(
"三角形的面积为:" );
        
return (0.5 * length * width);
    }

}


/** */ /**
 * 这个类测试对象引用.
 * 
@version 1.0 2005 年 5 月 20 日
 * 
@author Michael
 
*/


public   class  CalculateArea  {

    
/** *//** 构造方法. */
    
protected CalculateArea() {
    }


    
/** *//**
     * 这是 main 方法.
     * 
@param arg 传递至 main 方法的参数
     
*/


    
public static void main(final String[] arg) {
        
// 初始化变量
        Shape fObj;
        Square sqObj 
= new Square(10 , 20);
        Triangle trObj 
= new Triangle(12 , 8);
        fObj 
= sqObj;
        System.out.println(fObj.area());
        fObj 
= trObj;
        System.out.println(fObj.area());
    }

}

你可能感兴趣的:(java的多态)