简单学习Java抽象类要点及实例_Java教程-查字典教程网
简单学习Java抽象类要点及实例
简单学习Java抽象类要点及实例
发布时间:2016-12-28 来源:查字典编辑
摘要:使用抽象类应该注意的几个要点:包含一个或者多个抽象方法的类必须被声明为抽象类.将类声明为抽象类,不一定含有抽象方法.通常认为,在抽象类中不应...

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

包含一个或者多个抽象方法的类必须被声明为抽象类.

将类声明为抽象类,不一定含有抽象方法.

通常认为,在抽象类中不应该包括具体方法,建议尽量将通用的域和方法放在超类中.

抽象类不可以被实例化.即不能创建这个类的对象

实例代码:

复制代码 代码如下:

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

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Java学习
    热门Java学习
    编程开发子分类