程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 簡略進修Java籠統類要點及實例

簡略進修Java籠統類要點及實例

編輯:關於JAVA

簡略進修Java籠統類要點及實例。本站提示廣大學習愛好者:(簡略進修Java籠統類要點及實例)文章只能為提供參考,不一定能成為您想要的結果。以下是簡略進修Java籠統類要點及實例正文


應用籠統類應當留意的幾個要點:

包括一個或許多個籠統辦法的類必需被聲明為籠統類.
將類聲明為籠統類,紛歧定含有籠統辦法.
平日以為,在籠統類中不該該包含詳細辦法,建議盡可能將通用的域和辦法放在超類中.
籠統類弗成以被實例化.即不克不及創立這個類的對象
實例代碼:

import java.util.*;

/**
 * This program demonstrates abstract classes.
 * @version 1.01 2004-02-21
 * @author Cay Horstmann
 */
public class PersonTest
{
   public static void main(String[] args)
   {
      Person[] people = new Person[2];

      // fill the people array with Student and Employee objects
      people[0] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
      people[1] = new Student("Maria Morris", "computer science");

      // print out names and descriptions of all Person objects
      for (Person p : people)
         System.out.println(p.getName() + ", " + p.getDescription());
   }
}

abstract class Person
{
   public Person(String n)
   {
      name = n;
   }

   public abstract String getDescription();

   public String getName()
   {
      return name;
   }

   private String name;
}

class Employee extends Person
{
   public Employee(String n, double s, int year, int month, int day)
   {
      super(n);
      salary = s;
      GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
      hireDay = calendar.getTime();
   }

   public double getSalary()
   {
      return salary;
   }

   public Date getHireDay()
   {
      return hireDay;
   }

   public String getDescription()
   {
      return String.format("an employee with a salary of $%.2f", salary);
   }

   public void raiseSalary(double byPercent)
   {
      double raise = salary * byPercent / 100;
      salary += raise;
   }

   private double salary;
   private Date hireDay;
}

class Student extends Person
{
   /**
    * @param n the student's name
    * @param m the student's major
    */
   public Student(String n, String m)
   {
      // pass n to superclass constructor
      super(n);
      major = m;
   }

   public String getDescription()
   {
      return "a student majoring in " + major;
   }

   private String major;
}

在代碼塊:

 for (Person p : people)
         System.out.println(p.getName() + ", " + p.getDescription());

中p.getDescription(),將援用詳細子類的子類對象的辦法.

弗成以省略Person類中的getDescription(),緣由是編譯器只許可挪用在類中聲明的辦法.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved