簡略進修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(),緣由是編譯器只許可挪用在類中聲明的辦法.