当前位置: 移动技术网 > IT编程>开发语言>Java > 简单学习Java抽象类要点及实例

简单学习Java抽象类要点及实例

2019年07月22日  | 移动技术网IT编程  | 我要评论

使用抽象类应该注意的几个要点:

包含一个或者多个抽象方法的类必须被声明为抽象类.
将类声明为抽象类,不一定含有抽象方法.
通常认为,在抽象类中不应该包括具体方法,建议尽量将通用的域和方法放在超类中.
抽象类不可以被实例化.即不能创建这个类的对象
实例代码:

复制代码 代码如下:

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(),原因是编译器只允许调用在类中声明的方法.

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网