JAVA中继承的应用、扩展和方法的重写【基础】

关于继承说明

  定义两个类 Door 和 MyDoor ,如果其中MyDoor继承了 Door类,那么 MyDoor 就是子类, Door就是父类,子类继承了父类的所有方法和属性。子类可以对直接设置父类的属性和调用方法,也可以对父类的方法进行重写或扩展。但是,重写的方法在子类被实例化后,调用此方法时,输出的内容是子类的实现内容。如果要调用父类中被重写的方法,可以使用关键字:super进行调用

1、继承

父类:Door

Door类
 1 /**
 2  * Door类
 3  */
 4 package com.smile;
 5 
 6 public class Door {
 7     private  int height;
 8 
 9     public  int getHeight() {
10         return height;
11     }
12     public  void setHeight(int height) {
13         this.height = height;
14     }
15 
16     public void opendoor(String doorName)
17     {
18         //
19         System.out.println(doorName+" ,"+this.getHeight() +"m , is open");
20             
21     }
22 }

子类:MyDoor

MyDoor类
 1 /**
 2  * 定义我的门,使其继承Door类
 3  * 1、继承使用关键字:extends
 4  */
 5 package com.smile;
 6 
 7 public class MyDoor extends Door {
 8 
 9     String doorName="";
10     public MyDoor(String doorName,int height)
11     {    
12         this.setHeight(height);//这步不可少,顺序不可乱,否者测试的时候,door的高度就为0
13         
14         //继承了父类的opendoor方法
15         this.opendoor(doorName);
16         this.doorName=doorName;
17         
18     }
19     
20 }

测试类

测试类
 1 package com.smile;
 2 
 3 public class Studyobject {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         // TODO Auto-generated method stub
10         System.out.println("Hello MyJava!");
11         
12         
13         //继承测试代码调用
14         MyDoor myDoor =new MyDoor("MyDoor",123);
15         //调用方法        
16         myDoor.opendoor(myDoor.doorName);
17             
18         
19         
20     }
21 
22 }

 

2、继承的重写

重写就是在父类的属性、方法不适用的的情况下,对父类中的某些方法进行重新实现。被重写后,应用中使用实例化类调用该方法输出的是子类的实现内容,只有在使用关键字super进行调用输出的才是父类的实现内容。


这里父类不变,修改子类如下

子类代码:(重写后)

重写后的子类
 1 /**
 2  * 定义我的门,使其继承Door类
 3  * 1、继承使用关键字:extends
 4  * 2、可以进行父类方法重写、扩展
 5  */
 6 package com.smile;
 7 
 8 public class MyDoor extends Door {
 9 
10     String doorName="";
11     public MyDoor(String doorName,int height)
12     {    
13         this.setHeight(height);//这步不可少,顺序不可乱,否者测试的时候,door的高度就为0
14         //在重写情况下,使用super调用父类方法
15          System.out.println("在被重写的情况下,只有使用关键字super进行调用输出的才是父类的实现内容");
16         super.opendoor(doorName);
17 
18         //继承了父类的opendoor方法
19         System.out.println("在被重写的情况下,调用的是子类的方法,实现的是子类的实现内容");
20         this.opendoor(doorName);
21         this.doorName=doorName;
22         
23     }
24     
25     //重写了父类opendoor方法
26 
27     public void opendoor(String doorName)
28     {
29         System.out.println(doorName+" is a automatic door");
30     }
31     
32     
33 }

测试类

测试类
 1 package com.smile;
 2 
 3 public class Studyobject {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         // TODO Auto-generated method stub
10         System.out.println("Hello MyJava!");
11         
12         //继承测试代码调用
13         MyDoor myDoor =new MyDoor("MyDoor",123);
14         //调用方法    
15         System.out.println("在未被重写的情况下,调用的是父类的方法,实现的是父类的实现内容");    
16         myDoor.opendoor(myDoor.doorName);
17             
18         
19         
20     }
21 
22 }
23             

 

3、继承的扩展

扩展就是在父类的属性、方法不够的的情况下,子类中对父类中的方法或属性进行补充。

这里父类不变,修改子类如下

子类(扩展后)

扩展后的子类
/**
 * 定义我的门,使其继承Door类
 * 1、继承使用关键字:extends
 * 2、可以进行父类方法重写、扩展
 */
package com.smile;

public class MyDoor extends Door {

    String doorName="";
    public MyDoor(String doorName,int height)
    {    
        this.setHeight(height);//这步不可少,顺序不可乱,否者测试的时候,door的高度就为0
        //在重写情况下,使用super调用父类方法
         System.out.println("在被重写的情况下,只有使用关键字super进行调用输出的才是父类的实现内容");
        super.opendoor(doorName);
        
        //继承了父类的opendoor方法
        System.out.println("在被重写的情况下,调用的是子类的方法,实现的是子类的实现内容");
        this.opendoor(doorName);
        this.doorName=doorName;
        
    }
    
    //重写了父类opendoor方法
    
    public void opendoor(String doorName)
    {
        System.out.println(doorName+" is a automatic door");
    }
    
    //扩展
    public void Close()
    {
        System.out.println("MyDoor is close.");        
    }
    
}

测试类

测试类
 1 package com.smile;
 2 
 3 public class Studyobject {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         // TODO Auto-generated method stub
10         System.out.println("Hello MyJava!");
11                 
12         
13         //继承测试代码调用
14         MyDoor myDoor =new MyDoor("MyDoor",123);
15         //调用方法        
16         myDoor.opendoor(myDoor.doorName);
17         //扩展方法调用
18         myDoor.Close();        
19         
20         
21     }
22 
23 }

 

 

 

posted on 2012-09-28 13:46  poir  阅读(7284)  评论(0编辑  收藏  举报

导航