为什么要使用抽象类?我们已知,抽象类不能创建实例,只能当父类来继承,所以抽象类体现的是一种模板模式的设计,提供方法名给子类自己去实现。
抽象类的特点:
抽象类可以含有抽象方法,抽象方法只有方法名,没有方法体,因为不关心怎么实现。
通过其他类来继承抽象类,重写抽象方法来实现。
抽象类可以没有抽象方法,但是有抽象方法的一定是抽象类。
具体示例代码如下:
Shape.java
package cn.com;
public abstract class Shape {
public abstract double calPerimeter();
public abstract String getType();
}
Shape的实现类Triangle.java
package cn.com;
public class Triangle extends Shape {
private double a;
private double b;
private double c;
public Triangle(double a,double b,double c){
this.setSides(a, b, c);
}
public void setSides(double a,double b, double c){
if(a >= b+c && b >= a+c && c >= a+b)
{
System.out.println("三角形的两边之和必须大于第三边");
}
this.a = a;
this.b = b;
this.c = c;
}
public double calPerimeter(){
return a+b+c;
}
public String getType(){
return "三角形";
}
public static void main(String[] args) {
Shape s = new Triangle(1,2,1);
System.out.println(s.calPerimeter());
System.out.println(s.getType());
}
}
输出如下:
4.0
三角形
所以说,一个抽象类的抽象方法,需要由其他类继承抽象类,并且重写抽象方法,使之实现。
另:用abstract修饰类时,表示这个类只能被继承,当使用abstract修饰方法时,表示这个方法必须由子类提供实现(重写),
而final修饰的方法不能被重写,final修饰的类不能被继承。所以abstract和final永远不能共同使用。