通过继承手段修改类功能

来源:互联网 发布:淘宝导航条在线生成 编辑:程序博客网 时间:2024/06/05 10:44

    继承是面向对象的特性之一,即成为我们提供了访问类的特定功能的方法。
同时继承还包含一个特性,就是如果一个类AS继承了另一个类A,那么实际上
AS可以被看成是类A的一个特殊类型,同时如果类AS中没有覆盖类A中的方法,
那么当调用AS.xxx() 方法时会直接调用父类A的相应的xxx方法。

以下包含一个简单的实例来解释继承的特性

For Example:

A.class

public class A
{
 private String name;
 private String serial;

 public A()
 {
  name = "vhly[FR]";
  serial = "123456";
 }

 public void print()
 {
  if(isREG())
  {
   System.out.println("Good User! have a good time");
  }
 }

 public boolean isREG() // 准备覆盖的类方法
 {
  return name.equals(serial); // is very easy!!!!!!!!!
 }

 public void setData(String n, String s)
 {
  name = n;
  serial = s;
 }
}

以上类A的功能是如果输入的用户名和序列号相同,则显示"Good User! have a good time"
否则无显示。

那么如何对类A进行修改呢(输入任何数据都会显示正确信息)

public class ACrk extends A // 继承类 并且修改相应的方法
{
 public ACrk()
 {
  super();
 }

 public boolean isREG()
 {
  return true; // 其实对于类A来说并没有被修改,而是利用继承技术生成一个
                             // 类A的特例,在调用时也应该调用ACrk,而不是A
 }
}

调用类,并执行功能

public class Test4
{
 ACrk ac;

 public Test4()
 {
  ac = new ACrk();
 }

 public void test()
 {
  ac.setData("vhly[FR]","GOODluckFoR YOu");
   // 由于ACrk继承了类A,所以可以直接调用setData()方法
  ac.print(); // 同上
 }

 public static void main(String args[])
 {
  Test4 t4 = new Test4();
  t4.test();
 }
}

执行Test4类,会发现程序会输出正确信息。

同样,该方法也适用于GUI程序。

vhly[FR] 2006/04/18