国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

簡單學(xué)習(xí)Java抽象類要點及實例

2019-11-26 15:45:58
字體:
供稿:網(wǎng)友

使用抽象類應(yīng)該注意的幾個要點:

包含一個或者多個抽象方法的類必須被聲明為抽象類.
將類聲明為抽象類,不一定含有抽象方法.
通常認(rèn)為,在抽象類中不應(yīng)該包括具體方法,建議盡量將通用的域和方法放在超類中.
抽象類不可以被實例化.即不能創(chuàng)建這個類的對象
實例代碼:

復(fù)制代碼 代碼如下:

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;
}

在代碼塊:

復(fù)制代碼 代碼如下:

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

中p.getDescription(),將引用具體子類的子類對象的方法.

不可以省略Person類中的getDescription(),原因是編譯器只允許調(diào)用在類中聲明的方法.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 濮阳县| 长垣县| 镶黄旗| 鹤峰县| 镇巴县| 那坡县| 平罗县| 万载县| 门源| 东方市| 库尔勒市| 荣成市| 三穗县| 称多县| 秦安县| 曲靖市| 福贡县| 巧家县| 新邵县| 靖宇县| 平定县| 哈密市| 普宁市| 扶沟县| 长武县| 慈溪市| 台中市| 平顺县| 克山县| 凭祥市| 佛坪县| 绵阳市| 南投市| 分宜县| 咸宁市| 余江县| 揭东县| 花莲市| 康马县| 宝鸡市| 永泰县|