时间:2021-05-19
使用抽象类应该注意的几个要点:
包含一个或者多个抽象方法的类必须被声明为抽象类.
将类声明为抽象类,不一定含有抽象方法.
通常认为,在抽象类中不应该包括具体方法,建议尽量将通用的域和方法放在超类中.
抽象类不可以被实例化.即不能创建这个类的对象
实例代码:
复制代码 代码如下:
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(),原因是编译器只允许调用在类中声明的方法.
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
抽象类抽象类不能被实例化。抽象类与其它类一样,允许定义变量及方法。抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。例六
本文实例讲述了Java的抽象类原理与用法。分享给大家供大家参考,具体如下:Java的抽象类用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstr
本文实例讲述了java抽象类和接口定义与用法。分享给大家供大家参考,具体如下:抽象类抽象类定义只约定类所具有的抽象行为,没有具体实现相应行为。语法格式abstr
本文实例讲述了PHPabstract抽象类定义与用法。分享给大家供大家参考,具体如下:PHP抽象类应用要点:1.定义一些方法,子类必须完全实现这个抽象中所有的方
本文实例讲述了Java中抽象类用法与注意点。分享给大家供大家参考,具体如下:一抽象类的用法案例1代码abstractclassPerson//定义一抽象类Per