您的位置:首页 > 编程语言 > Java开发

学习JAVA中的抽象类

2006-02-14 15:49 232 查看
一 抽象类的定义

以前有段时间我总认为抽象类就是没有实现具体方法的类.现在看来,这种想法有很大的偏差.抽象类用abstract来定义,同时,具有一个或多个抽象方法的类本身也必须声明为abstract的,也就是说,抽象类可以有具体方法,但是有抽象方法的类一定是抽象类.抽象类不仅可以有具体的方法,还可以有具体数据.比如在抽象类Person中,我们可以定义Person的具体数据name,并且使用构造函数来储存:

abstract class Person{

    public Person(String n){

    name = n;

    }   

    public String getName(){

    return name;

    }

   public abcstract String getAge();

  private String name;

}

即使一个类中不包含任何抽象方法,这个类也可以被定义为抽象类.所以以前我认为抽象类中只能有抽象方法的想法是错的.书上还特别提到了:把尽可能多的功能,不管是不是抽象的,放到超类中是好的做法,特别是,要把通用字段和非抽象发放移到抽象超类中.抽象类可以创建对象变量,但是不能构造抽象类的实例,其对象变量必须指向其非抽象子类的对象.

二 抽象类的扩展

扩展抽象类有两种选择,一是在子类中只定义部分抽象方法或者不定义抽象类中的方法,这时,子类也必须定义为抽象类.二是可以定义抽象类中的全部方法,这时,子类也就不再抽象了.比如定义Student类扩展Person.可以有如下代码:

class Student extends Person{

public String getAge(){

return age;

}

private String age;

}这时我们可以写

Person p = new Student();

p.getName();

p.getAge();

抽象类中还有关于接口部分的内容,就回头再慢慢看了.虽然只是写了这点东西,但是已经纠正了我长期以来所犯的错误,算是小有收获吧.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java string 扩展 class