含有抽象方法的类,抽象方法即用abstract修饰的方法,即父类只知道其子类应该含有该方法,但无法知道子类如何实现这些方法
抽象类限制规定子类必须实现某些方法,但不关注实现细节
抽象类中可以包含普通方法(在Java中仍然为虚方法),也可以没有抽象方法
抽象类无法用于实例化对象,但可以定义引用变量,以用于指定子类对象
参考代码:
抽象类Shape
package com.hao.practice; public abstract class Shape { public abstract float perimeter(); public abstract float area(); }
子类Circle
package com.hao.practice; public class Circle extends Shape { static final float PI = 3.14f; float r = 0.0f; /* * 默认构造函数 */ public Circle() { super(); } /* * 带参构造函数 * @param r */ public Circle(float r) { super(); this.r = r; } /* * (非 Javadoc) * @see com.hao.practice.Shape#perimeter() */ @Override public float perimeter() { // TODO 自动生成的方法存根 return 2*PI*r; } @Override public float area() { // TODO 自动生成的方法存根 return PI*r*r; } }
子类Rectangle
package com.hao.practice; public class Rectangle extends Shape { float a = 0.0f; float b = 0.0f; /** * 默认构造函数 */ public Rectangle() { super(); } /** * 拷贝构造函数 * @param a * @param b */ public Rectangle(float a, float b) { super(); this.a = a; this.b = b; } @Override public float perimeter() { // TODO 自动生成的方法存根 return 2*a*b; } @Override public float area() { // TODO 自动生成的方法存根 return a*b; } }