应用场景:
在某些情况,某个父类只是知道其子类应该包含哪种方法,但无法准确的知道这些子类如何实现这些方法时,就可以使用抽象类。
从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。
作用:
限制规定子类必须实现某些方法,但不关注细节。
使用规则:
absabstract定义抽象类
absabstract定义抽象类,只要声明,不需要实现。
包含抽象方法的类就是抽象类。
抽象类中可以有普通的方法,也可以没有抽象方法。
抽象类不能直接创建,可以定义引用变量。
举例如下:
抽象类父类:
package Java2_4_Practice;
/**
* 现有Shape图形类,用Circle圆形子类,求图形周长和面积
* @author qiang
*
*/
public abstract class Shape {
public abstract void perimeter(); //抽象定义计算周长的方法
public abstract void area(); //抽象定义计算面积的方法
}
子类:
package Java2_4_Practice;
/**
* 现有Shape图形类,用Circle圆形子类,求图形周长和面积
* @author qiang
*
*/
import java.util.Scanner;
public class Circle extends Shape {
@Override
public void perimeter() {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("请输入圆形的半径:");
float a = input.nextFloat();
System.out.println("圆的周长为:"+(a*2*Math.PI));
}
@Override
public void area() {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("请输入圆形的半径:");
float a = input.nextFloat();
System.out.println("圆的面积为:"+(a*a*Math.PI));
}
}
测试类
package Java2_4_Practice;
/**
* 现有Shape图形类,用Circle圆形子类,求图形周长和面积
* @author qiang
*
*/
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Shape shape1 = new Circle();
shape1.perimeter();
shape1.area();
}
}