- public class Demo1 {
- public static void main(String[] args) {
- Shap s[]=new Shap[3];//1,定义一个3个元素的数组 里面元素是shap类型的
- s[0]=new Rect(8,0); //2,第一个元素是shap子类Rect的,多态的形式
- s[1]=new Rect(5.0,6.0); //5,第二个元素了,一样的步骤,w=5.0 , h=6.0
- s[2]=new Rect(new Rect(12.0,4.0)); //6,第三个元素, 先有Rect的对象,w=12.0 , h=4.0
-
- for (int i = 0; i < s.length; i++) {
- System.out.println("s["+i+"]area="+s[i].area());
- } //9,循环i=0,1,2三次. s[i]是个对象
- //s[i].area()是调用Rec里面的area方法,也是覆写了父类的
- //返回double类型的.
- //i=0时,w=8.0 h=0.0 打印s[0]area=0.0
- //i=1时,w=5.0 h=6.0 打印s[0]area=30.0
- //i=2时,w=12.0 h=4.0 打印s[0]area=48.0
-
- }
-
- }
- abstract class Shap{
- private double w,h;
-
- Shap(double i) {
- w=h=i;
- }
-
- Shap(double i,double j){ //4,w=8.0 h=0.0,
- w=i;
- h=j;
- }
-
- Shap(Shap s){
- w=s.w; //8,这里了,w=12.0 ,h=4.0
- h=s.h;
- }
-
- double getw(){
- return w;
- }
-
- double geth(){
- return h;
- }
-
- abstract double area();
- }
- class Rect extends Shap{
- Rect(double i){
- super(i);
- }
-
- Rect(double i,double j){ //3,new Rect(8,0)调用父类的构造方法
- super(i,j);
- }
-
- Rect(Rect r){ //7,作为对象r传入这里.
- super(r);
- }
-
- double area(){
- return getw()*geth();
- }
-
- }
复制代码 这只是我自己的理解啊.我也是菜鸟,觉得关系挺乱的.有点晕.只是我的个人理解.巧合的是跟结果一致~~
坐等大神回复~
互相学习哈! |