Java 19继承.创建子类

创建子类

一般而言,通过继承创建新的类比重新写更快捷、更容易且成本更低。继承是支持软件复用(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;
   }
}

猜你喜欢

转载自www.cnblogs.com/H97042/p/11028207.html