java抽象类

来源:互联网 发布:手机主题软件 编辑:程序博客网 时间:2024/06/10 11:51

抽象类:抽象类是类的一种特殊的情景,这个普通类的区别在于抽象类是不能实例化对象,但是类的其他的功能它依然有,比如说成员函数,成员变量,构造方法都是和普通的函数一样。特别注意的是抽象类是一种继承关系,并且一个类只能继承一个抽象类。

如何定义一个抽象的类:

public abstract class class_Name{

类体;

}

下面我们通过一个例子来演示一下抽象类,以及实现抽象类的继承:

public abstract class Emplyee {    private String name;    private String address;    private int number;    public Emplyee(String name,String address,int number){        this.name=name;        this.address=address;        this.number=number;    }    public double computePay(){      System.out.println("Inside Employee computePay");        return 0.0;    }    public void mailCheck()    {        System.out.println("Mailing a check to"+this.name+" "+this.address);    }    public String toString()    {        return name+""+address+""+number;    }    public String getName(){        return name;    }    public String getAddress(){        return address;    }    public int getNumber(){        return number;    }    public void setName(String name){        this.name=name;    }    public void setAddress(String address){        this.address=address;    }    public void setNumber(int number){        this.number=number;    }}
在定义抽象类的时候我们需要实现的抽象类的封装,也就是将里面的成员变量的一些set和get方法要写好,以及构造方法,其实构造方法到现在为止其实其目的就是给类中的成员变量进行初始化,有这些功能,一个类可以有多个构造方法。现在我们创建一个Salary类继承Employee类:

class Salary extends Emplyee {    private double salary;    public Salary(String name, String address, int number, double salary) {        super(name, address, number);        setSalary(salary);    }    public void setSalary(double salary) {        this.salary = salary;    }    public double getSalary() {        return salary;    }    public static void main(String args[]) {        Salary s = new Salary("alec", "河南省夏邑县杨集镇", 25, 10000.0);        Emplyee emplyee = new Salary("xiaoming", "张家港", 24, 9000);        System.out.println(s.getName());         System.out.println(emplyee.getAddress());    }}

Salary类的构造方法,需要调用父类的构造方法,当然调用一个构造方法就可以了,我们用的super()参数是我们父类的构造方法的参数。我们看Salary类中的主函数,我们要知道我们可以创建Employee的对象,但是new的时候是用的Salary,其实这一点用C++里面的地址的思想是比较好理解的,创建一个对象也就是向系统申请一段内存,用来存储对象,当我们想系统申请Employee的时候系统就会分配一段内存Size(Employee),但是因为继承关系创建一个Salary对象也会向系统申请一段内存也是Size(Employee).因为继承关系,所以系统不会申请去开辟两个空间。

但是我们在里面创建的两个对象,其使用都是一样的。


0 0
原创粉丝点击