创建子类
一般而言,通过继承创建新的类比重新写更快捷、更容易且成本更低。继承是支持软件复用(software reuse)的途径之一。
继承的过程是在两个类之间建立一种"是"的关系,及子类是一种更具体的父类版本。
public class Words
{
//-----------------------------------------------------------------
// 实例化派生类并调用其继承的和本地方法
//-----------------------------------------------------------------
public static void main(String[] args)
{
Dictionary webster = new Dictionary();
System.out.println("Number of pages: " + webster.getPages());
System.out.println("Number of definitions: " +
webster.getDefinitions());
System.out.println("Definitions per page: " +
webster.computeRatio());
}
}
public class Book
{
protected int pages = 1500;
//----------------------------------------------------------------
// Pages mutator.
//----------------------------------------------------------------
public void setPages(int numPages)
{
pages = numPages;
}
//----------------------------------------------------------------
// Pages accessor.
//----------------------------------------------------------------
public int getPages()
{
return pages;
}
}
public class Dictionary extends Book
{
private int definitions = 52500;
//-----------------------------------------------------------------
// 使用本地值和继承值打印消息。
//-----------------------------------------------------------------
public double computeRatio()
{
return (double) definitions/pages;
}
//----------------------------------------------------------------
// 定义mutator。
//----------------------------------------------------------------
public void setDefinitions(int numDefinitions)
{
definitions = numDefinitions;
}
//----------------------------------------------------------------
// 定义访问者。
//----------------------------------------------------------------
public int getDefinitions()
{
return definitions;
}
}
super引用
在一个类中可以使用保留字super引用父类,及使用super引用可以访问父类成员。
public class Words2
{
//-----------------------------------------------------------------
// 实例化派生类并调用其继承的和本地方法
//-----------------------------------------------------------------
public static void main(String[] args)
{
Dictionary2 webster = new Dictionary2(1500, 52500);
System.out.println("Number of pages: " + webster.getPages());
System.out.println("Number of definitions: " +
webster.getDefinitions());
System.out.println("Definitions per page: " +
webster.computeRatio());
}
}
public class Book2
{
protected int pages;
//----------------------------------------------------------------
// 构造函数:使用指定的数量设置书籍页面
//----------------------------------------------------------------
public Book2(int numPages)
{
pages = numPages;
}
//----------------------------------------------------------------
// Pages mutator.
//----------------------------------------------------------------
public void setPages(int numPages)
{
pages = numPages;
}
//----------------------------------------------------------------
// Pages accessor.
//----------------------------------------------------------------
public int getPages()
{
return pages;
}
}
public class Dictionary2 extends Book2
{
private int definitions;
//-----------------------------------------------------------------
// 构造函数:使用指定的数字设置字典页面和定义。
//-----------------------------------------------------------------
public Dictionary2(int numPages, int numDefinitions)
{
super(numPages);
definitions = numDefinitions;
}
//-----------------------------------------------------------------
// 使用本地值和继承值打印消息。
//-----------------------------------------------------------------
public double computeRatio()
{
return (double) definitions/pages;
}
//----------------------------------------------------------------
// 定义mutator。
//----------------------------------------------------------------
public void setDefinitions(int numDefinitions)
{
definitions = numDefinitions;
}
//----------------------------------------------------------------
// 定义accessor。
//----------------------------------------------------------------
public int getDefinitions()
{
return definitions;
}
}