学习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();
抽象类中还有关于接口部分的内容,就回头再慢慢看了.虽然只是写了这点东西,但是已经纠正了我长期以来所犯的错误,算是小有收获吧.
以前有段时间我总认为抽象类就是没有实现具体方法的类.现在看来,这种想法有很大的偏差.抽象类用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学习第十三课(继承下:抽象类abstract)
- 学习笔记_毕向东 Java_继承_抽象类_接口_多态 2014.7.13
- java基础学习总结——抽象类
- Java学习笔记 --- 抽象类和接口的区别与联系
- Java 学习笔记(0x0C) 抽象类
- Java学习笔记之方法重载,动态方法调度和抽象类
- java学习笔记(类、抽象类和接口)
- java学习日记_44:面向对象之接口与抽象类的区别
- JAVA 学习第四天(1)抽象类
- Java基础学习中,关于面向对象中多态、抽象类、接口的总结
- 黑马程序员-Java学习笔记之抽象类,接口,多态和内部类
- java学习总结-抽象类
- 【幻化万千戏红尘】qianfengDay09-java基础学习:接口,抽象类,抽象方法,多态,instanceof
- 【Java学习笔记】10.继承、抽象类、接口
- Java学习笔记53. Java中的抽象类
- java学习笔记-抽象类abstract与接口interface
- JAVA学习笔记之抽象类
- java 抽象类和接口学习中的2个小心得
- 4000 Java 学习—抽象类和接口的区别
- (非原创)Java学习(一)抽象类和接口