继承是面向对象的特性之一,即成为我们提供了访问类的特定功能的方法。
同时继承还包含一个特性,就是如果一个类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