方法重写规则:

1.子类要重写的方法与父类方法具有完全相同的返回类型+方法名称+参数列表;

2.子类要重写的方法的访问权限大于或者等于父类方法的访问权限;

3.子类要重写的方法不能抛出比父类方法更大的异常;

circle.class

1 public class Circle {  
 2 
 3            protected double radius;    
 4 
 5     public Circle(double r) {  
 6              radius=r;
 7     }
 8 
 9     public void setr(double radius){  
10              this.radius=radius;
11      }    
12 
13      public double getr(){
14              return radius;
15      }    
16 
17      public double getarea() {
18              return 3.14*radius*radius;
19      }
20 }

Cylinder.calss

public class Cylinder extends Circle {  

          private double length;    

    public Cylinder() {   
         super(1);                   
         length=1;  
     }

    public void setl(double length){  
          this.length=length;
     }    

     public double getl(){
           return length;  
      }    

        //子类方法对父类getarea方法的重写,获取圆柱表面积    

      public double getarea() {  
            return super.getarea()*2+radius*2*3.14*length;      //在父类中,radius是protected属性,可在子类中直接调用;如果属性为private,则通过getr()获取
      }        

      public double getv(){  
             return super.getarea()*length;   //在子类的方法中使用super.被重写的父类方法对该方法进行调用  
     } 
}