Java抽象类
来源:互联网 发布:大数据与经济发展 编辑:程序博客网 时间:2024/06/08 05:03
抽象类的概念
在面向对象的概念中,所有的对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描述对象的,如果一个类中没有包含足够的信息来描述一个具体的对象,这就是抽象类。抽象类除了不能实例化对象之外,类的其他功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。在java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
抽象类
在java中用abstract修饰符定义一个抽象类,如下代码实例:
public abstract class Shapes { protected int x,y,k; protected double m; public Shapes(int x,int y,int k,double m) { this.x=x; this.y=y; this.k=k; this.m=m; } abstract public double getArea(); //抽象方法 abstract public double getPerimeter(); //抽象方法}
注意:抽象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。对于上面的抽象类Shapes,如果使用Shapes s=new Shapes(),这是错误的。
继承抽象类
我们能通过一般方法继承Shapes类:
class Rect extends Shapes { public double getArea(){ return(k*m); } public double getPerimeter(){ return(2*k+2*m); } public Rect(int x,int y,int width,int height){ super(x,y,width,height); }}注意:创建对象的工作可以由抽象类派生的具体子类来实现,上面的Rect类可以创建对象。
抽象方法
如果你想设计一个类,在该类中包含一个特别的成员方法,方法的具体实现由它的子类确定,那么可以在父类中声明该方法为抽象方法。注意抽象方法没有方法体,如上面Shapes抽象类中的getArea()和getPerimeter()就是抽象方法。
声明抽象方法会造成两个结果:
1、如果一个类包含抽象方法,那么该类必须是抽象类;
2、任何子类必须重写父类的抽象方法,否则声明自身为抽象类。
抽象类的总结
1、抽象类不能被实例化,只有抽象类的非抽象子类可以创建对象;
2、抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类;
3、抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现;
4、构造方法、类方法(用static修饰的方法)不能声明为抽象方法;
5、抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非子类也是抽象类,如果子类还是抽象类,则子类不能定义和父类同名的抽象方法。
6、abstract不能与final并列修饰同一个类(因为final修饰的是最终类,不能有子类,这与abstract必定有子类逻辑矛盾)。
阅读全文
0 0
- java 抽象类,抽象方法
- java 抽象类,抽象方法
- java抽象函数,抽象类
- Java抽象类抽象方法
- java--抽象类、抽象方法
- java抽象和抽象类
- java抽象类、抽象方法
- java抽象类抽象方法
- java--抽象类/抽象方法
- java中的抽象类
- Java中的抽象类
- Java抽象类
- java抽象类
- java 抽象类 Shape
- java抽象类
- Java抽象类
- java抽象类
- java 抽象类
- maven
- JSP内置对象的使用:request,cookie,session
- Android启动流程(一)
- 看雪ctf2017第一题详解
- Properties配置文件数据加密
- Java抽象类
- shell-grammar
- Android Studio 使用教程(二十一)之Android Studio如何快速生成get和set
- map根据其value值进行排序
- 关于SpringDataJPA的一些小知识
- Hdu A+B for Input-Output Practice (VII)
- Java指定保留小数位数的方法
- 解决Python字符串显示u'...'的问题
- 虚函数