关于抽象类的几个注意点
2017-06-07 16:34
162 查看
上篇博客具体的说明了抽象类,以及为什么使用抽象类,现在就说一下关于抽象类的几个注意点:
1、抽象方法不能包含在非抽象类中。如果抽象父类的子类不能实现所有的抽象方法,那么子类也必须定义为抽象的。换句话说,在抽象类扩展的非抽象类中,必须实现所有的抽象方法。还要注意到,抽象类是非静的。
2、抽象类是不能使用new关键字来初始化的。但是,任然可以定义它的构造方法,这个构造方法在它的子类的构造方法中调用。例如Object是具体的,GeometricObject类的构造方法在Circle和Rectange类中调用。
3、包含抽象对象的类必须是抽象的。但是,可以定义一个不包含抽象方法的抽象类。在这种情况下,不能使用new操作符创建该类的实例。这种类是用来定义新子类的基类的。
4、即使子类的父类是具体的,这个子类也可以是抽象的。例如,Object是具体的,GeometricObject可以是抽象的。
5、子类可以覆盖父类的方法,并且把它定义为abstract。这是很少见
的,但是它在当父类的方法实现在子类中不合法是很有用的。在这种情况下,子类必须定义为abstract.
6、不能使用new操作符来从抽象类创建一个实例,但是抽象类可以作为一种数据类型。因此,下面的语句是创建一个元素是GeometricObject类型的数组,这个语句是正确的。
然后可以创建一个GeometricObject的实例,并将它引用赋值给数组,如下所示:
1、抽象方法不能包含在非抽象类中。如果抽象父类的子类不能实现所有的抽象方法,那么子类也必须定义为抽象的。换句话说,在抽象类扩展的非抽象类中,必须实现所有的抽象方法。还要注意到,抽象类是非静的。
2、抽象类是不能使用new关键字来初始化的。但是,任然可以定义它的构造方法,这个构造方法在它的子类的构造方法中调用。例如Object是具体的,GeometricObject类的构造方法在Circle和Rectange类中调用。
3、包含抽象对象的类必须是抽象的。但是,可以定义一个不包含抽象方法的抽象类。在这种情况下,不能使用new操作符创建该类的实例。这种类是用来定义新子类的基类的。
4、即使子类的父类是具体的,这个子类也可以是抽象的。例如,Object是具体的,GeometricObject可以是抽象的。
5、子类可以覆盖父类的方法,并且把它定义为abstract。这是很少见
的,但是它在当父类的方法实现在子类中不合法是很有用的。在这种情况下,子类必须定义为abstract.
6、不能使用new操作符来从抽象类创建一个实例,但是抽象类可以作为一种数据类型。因此,下面的语句是创建一个元素是GeometricObject类型的数组,这个语句是正确的。
GeometricObject[] objects = new GeometricObject[10];
然后可以创建一个GeometricObject的实例,并将它引用赋值给数组,如下所示:
objects[0] = new Circle;
相关文章推荐
- 关于《精通css》之几个不错的注意事项
- 关于java的几个常用关键字及抽象类和接口
- 关于mysql中orderby的几个注意事项
- 关于IE6、7、8下实现盒阴影的几个注意点
- 关于IE6、7、8下实现盒阴影的几个注意点
- 抽象类和接口的几个注意
- 关于C51的中断函数要注意的几个问题
- 关于Portal压力测试需要注意的几个问题
- flex中关于内存释放几个注意的地方(zz)
- 关于addSubView需要注意的几个点
- ABAP--关于abap的subroutines的几个注意点
- 关于struts表单验证应注意的几个小问题
- ABAP--关于abap的subroutines的几个注意点
- flex开发中关于内存释放几个注意的地方
- 关于使用标签需要注意的几个问题
- 关于《精通css》之几个不错的注意事项
- ABAP--关于abap的subroutines的几个注意点
- 关于全局钩子的几个要注意的问题.
- 关于Java中使用容器的几个注意点
- 关于抽象类的几个关注点