源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-03-24 00:13 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:简单学习Java抽象类要点及实例
使用抽象类应该注意的几个要点: 包含一个或者多个抽象方法的类必须被声明为抽象类. 将类声明为抽象类,不一定含有抽象方法. 通常认为,在抽象类中不应该包括具体方法,建议尽量将通用的域和方法放在超类中. 抽象类不可以被实例化.即不能创建这个类的对象 实例代码:
[u]复制代码[/u] 代码如下:
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; }
在代码块:
[u]复制代码[/u] 代码如下:
 for (Person p : people)          System.out.println(p.getName() + ", " + p.getDescription());
中p.getDescription(),将引用具体子类的子类对象的方法. 不可以省略Person类中的getDescription(),原因是编译器只允许调用在类中声明的方法.
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部